終于不用再苦逼地寫文檔了!一步步教你如何生成可調(diào)試的API

本文寫的是什么键畴?


平時總要寫文檔最盅。不寫,代碼無法維護起惕,所以不得不寫涡贱。但是寫文檔費時費力,更可怕的是寫完了讀起來還很費勁惹想,束之高閣问词,總感覺時間浪費掉了,真是苦不堪言嘀粱。

一直以來深受“寫文檔”的折磨激挪,偶然看到一篇神文,接著在網(wǎng)上又查了自動化工具DSL的理論草穆,這才茅塞頓開灌灾!雖然大部分都沒看懂,但要想做到輕松寫出好文檔悲柱,足矣锋喜!

現(xiàn)在就來說說我是怎么辦到的吧!

要做什么?


我們的最終目的嘿般,是寫出好文檔段标。所以,首先我們要確定:什么是好文檔炉奴。

好文檔就如下圖所示:

上面的文檔好在哪逼庞?

首先,它是文檔瞻赶,讓你知道它的功能赛糟,參數(shù),一目了然砸逊;

其次璧南,它是程序,你輸入?yún)?shù)就能馬上看到結(jié)果师逸。

所以司倚,我所希望的事,就是在完成代碼后篓像,可以費很少的力氣动知,就生成一個像上文中所說的可調(diào)試文檔

我們接下來要做的兩件事

生成文檔员辩;

文檔是可調(diào)試的文檔盒粮。

怎么做?


現(xiàn)在要開始做了屈暗,總感覺有些無從下手拆讯,那就先從最具體的事情——目前唯一能看得見的可調(diào)試API開始分析吧。

我們最終要做出的可調(diào)試API是什么樣的呢养叛?

參考之前的效果圖,簡化一些來說宰翅,就是下面這個樣子:

純文字顯示類名弃甥,方法,功能解釋汁讼,輸入?yún)?shù)淆攻;

有一個執(zhí)行按鈕;

有一個區(qū)域顯示執(zhí)行結(jié)果嘿架。

在這個界面中瓶珊,有哪些是變量呢?

1.? ? 類名

2.? ? 方法名

3.? ? 功能說明

4.? ? 參數(shù)數(shù)量

5.? ? 參數(shù)名

6.? ? 執(zhí)行結(jié)果

其中:一個API對應(yīng)著一個類名耸彪,一個方法名伞芹,一個功能說明,多個參數(shù)名,執(zhí)行結(jié)果是執(zhí)行后生成的唱较。

模型分析


根據(jù)以上結(jié)果扎唾,我就可以將這個API抽象出一個模型類了:

一個API包含屬性:類名,類文件所在路徑南缓,方法名胸遇,功能說明以及該方法所需要輸入的參數(shù)。

而一個參數(shù)又包含屬性:參數(shù)名及參數(shù)說明汉形。

事件流


接下來分析一下整個事務(wù)流程纸镊。

一句話流程

點擊“生成”按鈕,生成類的HTML文檔概疆。

這就是我們要做的事情薄腻,但是說得很不清楚。我們要生成某個類的某個方法對應(yīng)的HTML文檔届案,但是一句話沒有說清庵楷。

現(xiàn)在我們要解釋清楚,于是把它拓展開來楣颠,變成一段話

配置文件中已指定好待生成文檔的類及其方法了尽纽,點擊“生成按鈕”, 讀取該配置文件童漩,再依次生成文檔弄贿。

我們接下去就這樣繼續(xù)拓展下去,直到把所有步驟都搞清楚矫膨。

最終設(shè)計


整個系統(tǒng)一共有三類頁面:

功能頁:只有一個生成API的按鈕差凹;

類清單頁:將類及其方法列出來,點擊后跳轉(zhuǎn)至API頁面侧馅。

API頁:列出方法說明危尿,可以輸入?yún)?shù)并執(zhí)行該方法,可查看其執(zhí)行結(jié)果馁痴。

三類頁面中谊娇,第二類類清單頁沒有什么功能,只涉及到頁面跳轉(zhuǎn)罗晕,所以只用html實現(xiàn)就行了济欢。

至于功能頁和API頁都采用MVC模式進行設(shè)計。

功能頁

MVC結(jié)構(gòu)

Model:API小渊;

View:make_api_template.php法褥;

Controller:create_api.php

MVC調(diào)用流程

用戶在View層點擊“生成”按鈕后,觸發(fā)Controller酬屉;

Controller中指定了需要生成API的類半等,并調(diào)用這些類中的靜態(tài)方法make_api生成了Model;

Controller利用這些Model生成文檔

API頁

MVC結(jié)構(gòu)

Model:js代碼,目前還未形成獨立的model;

View:生成的html頁酱鸭;

Controller:index.php

MVC調(diào)用流程

用戶在View層輸入某方法的參數(shù)吗垮,點擊“執(zhí)行”按鈕后觸發(fā)Controller;

Controller根據(jù)View頁傳來的參數(shù)凹髓,執(zhí)行方法烁登,得到結(jié)果后返回給View;

View接收到結(jié)果并將其顯示出來

結(jié)語


我實現(xiàn)的版本是CohenBible蔚舀。

類似的工具有很多饵沧,prmd,swagger editor赌躺, apidocjs狼牺,都很好用。

寫這篇文章不是鼓勵大家重復(fù)造輪子礼患,但是自己實現(xiàn)過一遍是钥,會有不一樣的收獲。

我為什么會想到重復(fù)造輪子呢缅叠?

其實最大的原因就是:真的不太會用上面的幾個工具悄泥,只好自己實現(xiàn),把整個生成文檔的流程走了一遍肤粱。結(jié)果弹囚,回過頭再來看上面的工具,竟然拿來就能用了领曼!如果是按官方的教程走鸥鹉,不知道還要花多少時間,哈哈:)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末庶骄,一起剝皮案震驚了整個濱河市毁渗,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌瓢姻,老刑警劉巖祝蝠,帶你破解...
    沈念sama閱讀 207,113評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異幻碱,居然都是意外死亡,警方通過查閱死者的電腦和手機细溅,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評論 2 381
  • 文/潘曉璐 我一進店門褥傍,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人喇聊,你說我怎么就攤上這事恍风。” “怎么了?”我有些...
    開封第一講書人閱讀 153,340評論 0 344
  • 文/不壞的土叔 我叫張陵朋贬,是天一觀的道長凯楔。 經(jīng)常有香客問我,道長锦募,這世上最難降的妖魔是什么摆屯? 我笑而不...
    開封第一講書人閱讀 55,449評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮糠亩,結(jié)果婚禮上虐骑,老公的妹妹穿的比我還像新娘。我一直安慰自己赎线,他們只是感情好廷没,可當(dāng)我...
    茶點故事閱讀 64,445評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著垂寥,像睡著了一般颠黎。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上滞项,一...
    開封第一講書人閱讀 49,166評論 1 284
  • 那天狭归,我揣著相機與錄音,去河邊找鬼蓖扑。 笑死唉铜,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的律杠。 我是一名探鬼主播潭流,決...
    沈念sama閱讀 38,442評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼柜去!你這毒婦竟也來了灰嫉?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,105評論 0 261
  • 序言:老撾萬榮一對情侶失蹤嗓奢,失蹤者是張志新(化名)和其女友劉穎讼撒,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體股耽,經(jīng)...
    沈念sama閱讀 43,601評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡根盒,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,066評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了物蝙。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片炎滞。...
    茶點故事閱讀 38,161評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖诬乞,靈堂內(nèi)的尸體忽然破棺而出册赛,到底是詐尸還是另有隱情钠导,我是刑警寧澤,帶...
    沈念sama閱讀 33,792評論 4 323
  • 正文 年R本政府宣布森瘪,位于F島的核電站牡属,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏扼睬。R本人自食惡果不足惜逮栅,卻給世界環(huán)境...
    茶點故事閱讀 39,351評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望痰驱。 院中可真熱鬧证芭,春花似錦、人聲如沸担映。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蝇完。三九已至官硝,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間短蜕,已是汗流浹背氢架。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評論 1 261
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留朋魔,地道東北人岖研。 一個月前我還...
    沈念sama閱讀 45,618評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像警检,于是被迫代替她去往敵國和親孙援。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,916評論 2 344

推薦閱讀更多精彩內(nèi)容

  • iOS網(wǎng)絡(luò)架構(gòu)討論梳理整理中扇雕。拓售。。 其實如果沒有APIManager這一層是沒法使用delegate的镶奉,畢竟多個單...
    yhtang閱讀 5,165評論 1 23
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,525評論 25 707
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理础淤,服務(wù)發(fā)現(xiàn),斷路器哨苛,智...
    卡卡羅2017閱讀 134,601評論 18 139
  • 愛情 或許愛情 也是一款商品鸽凶, 只是我的還未上架。 失戀是會呼吸的痛 失戀是會呼吸的痛建峭, 總有一個人 會無動于衷吱瘩。...
    幻夢邪魂閱讀 181評論 0 0
  • 早晨,媽媽送我去學(xué)校的時候說迹缀,今天一下課就帶我去沃爾瑪逛一逛使碾,而且可以滿足我三個愿望,可以任意選除了玩具祝懂,...
    徐寅博閱讀 552評論 8 4