如果單從api文件出發,由於資訊量不足,通常很難了解它具體想實現的功能,正因為有這種假設的存在,使得經常在開發之後才會想起對文件進行完善。但這種習慣對於任何開發人員而言,都不是乙個好事情,在乙個專案中他們會被分配完成不同的任務,不管是什麼任務,必須要準確理解每個功能後,才能找到合適的方法完成工作,而乙份完善的文件的作用就是能讓你更好的理解具體的任務。
我們面對專案驗收不斷臨近的截止日期,更不得不將精力全都放在開發上,導致幾乎沒有時間處理和完善專案文件,一般只會寫個大概。因此,當你發現了文件上十分簡略的資訊時,那只能寄希望於回憶起當時的開發細節,不然驗收時根本無從說起。
如果在驗收的標準中,對文件的完整度和正確性提出要求,並且使用者能對此進行評級,那文件的完善程度將會大大提公升。
在編寫大量**之前,如果已經在文件中記錄了所需的詳細資訊,那麼這個文件將成為開發團隊的寶貴資源。因為這個文件可以在開發團隊和測試人員之間共享,所有人都可以同時使用這樣的api。反過來說,通過團隊的互動性凸顯了文件在api開發中的重要位置。
當你想找到某乙個文件時,通過互動協作的方式,你能夠直接從專案中呼叫這個文件,這將有助於開發人員在完成任務時更方便地呼叫api,有效減少開發人員除錯介面的時間。
我們知道了api文件的重要性,下面我們講一下文件設計應該如何設計。
這些是我認為在文件中應該存在的三個功能:
1.時刻保持同步性,這意味著如果開發過程中增加了什麼內容,那麼從文件中也應該馬上得知,即便是進度滯後,也應該保證文件內容在即將發布時與開發進度是一致的。
2.文件內容應該提供專案整個功能的完整內容,同時實現的方法也應該記錄在文件中,供開發人員回看,方便查漏補缺。
3.文件應該作為指導和規範,幫助不同分工的開發人員完成目標統一的業務,也可用於測試api,並有助於增強開發團隊溝通。如果有條件的話,還可以對完善文件的人提供獎勵。
如何驗證api使用者的身份呢?首先你需要乙個身份資訊驗證方案。
1.如果你使用的是oauth,請不要忘記在文件中解釋如何設定oauth並獲取api金鑰。
2.你需要記錄開發中遇到的錯誤以及它們導致的問題,你應該在文件中解釋這個錯誤是否違反了錯誤標準,即失敗示例。
3.你需要記錄包含端點和有關如何使用它們的資訊,包括請求資訊和返回資訊。這是api文件的最主要部分。
記錄好這三個部分,你將有乙個良好的開端,因為你已經有了使用api所需的大部分內容。同時對於測試人員來說,根據你的文件進行api測試會方便很多。
但這往往還是不夠的,當你遇到更複雜的情況,你還得提供額外的api的非功能性方面的文件來補充說明。
1.解釋api文件中每個引數作用。
2.各種語言和工具(curl,postman等)的api呼叫示例。這些示例可能會被多次使用,可以說是api文件中最重要的部分。
3.詳細說明呼叫api時的工作流程。
4.api提供程式採用的設計原則概述,例如rest(特別是超**),http**等。
5.有關身份驗證的資訊,包括可能實現的其他方案,如oauth或openid connect。
6.有關錯誤處理的一般資訊以及有關http返回碼的資訊。
7.一種互動式api資源管理器,允許開發人員輕鬆地將所有這些資訊變為現實。
首先要將每個功能的需求轉換為文件,同時你的文件應該是可分享的。只有這樣,檢視的人可以通過文件獲得有關如何正確開發專案的資訊,尤其是需要理解文件以解釋專案的內部開發人員。
在編寫api專案的文件之後,如果有條件的話,最好將文件的書面注釋和其他內容轉換為豐富多彩的**和其他可自定義的模板,將有助於為專案生成完整的站點。
在所有api文件格式中,其中有三種值得一提,因為它們允許你以手動或者自動的方式設計api:
1.swagger和open api。你可以輕鬆生成自己的api伺服器**,客戶端**和文件本身。open api initiative(oai)專注於基於swagger規範建立,發展和推廣**商中立的api描述格式。
2.raml。restful api建模語言系統提供了一種能指定api使用模式的簡便方法。
3.api blueprint。這是一種基於markdown格式的標準,可讓你輕鬆地從文件中生成**。
作為開發者,如果你想保證他人能夠很好地理解你的api,那麼在開發中就必須清楚文件的重要性。雖然有些人也承認上述的觀點,認為使用api文件啟動專案是乙個好主意,但實際上大多數人都還在努力編寫與文件無關的內容。
如果一開始就規劃好你的文件,一旦確定後,那麼會有更多的時間來處理主專案的內容。從長遠來看,擁有優秀的文件可以為你節省大量時間,並可以幫助你更輕鬆地構建專案。
翻譯和修改:eolinker
如何使用 Core Plot 的 API 幫助文件
core plot 可是 ios 下絕好的圖表元件,雖說它的相關資料不甚豐富,特別是中文的,英文的還是有幾篇不錯的文章,不過 core plot 自身提供的 api 幫助文件,以及 示例其實很有用的,不妨且在英文的 注意是英文的 google 中輸入 core plot,即時搜尋出的第一頁裡的鏈結很...
驅動攔截NT的API實現隱藏木馬客戶端
目前nt下有很多種隱藏檔案和目錄的方法,其中最簡單的一種是給檔案和資料夾加上系統屬性和隱藏屬性,作業系統就會不在顯示了,而且查詢也找不到了,但是這種方法一點都不徹底,沒有可用性!下面我們來介紹用nt驅動程式來攔截ntapi來實現徹底隱藏檔案和目錄的目的。nt下有乙個檔案ntdll.dll,大部分nt...
編寫驅動攔截NT的API實現隱藏檔案目錄
目前nt下有很多種隱藏檔案和目錄的方法,其中最簡單的一種是給檔案和資料夾加上系統屬性和隱藏屬性,作業系統就會不在顯示了,而且查詢也找不到了,但是這種方法一點都不徹底,沒有可用性!下面我們來介紹用nt驅動 程式來攔截ntapi來實現徹底隱藏檔案和目錄的目的。nt下有乙個檔案ntdll.dll,大部分n...