應用API優先的方法意味着設計API時,使其具備一致性和適應性,不管應用於哪些開發項目。對API使用API描述語言(如OpenAPI)是關鍵,由於它有助於創建API與其餘程序通訊的樞紐,即便這些系統各自的語言不一樣。固然,API不存在於單獨的真空中,所以與其利益相關者的協做和規劃對於設計過程一樣重要,設計過程早在任何代碼實際編寫以前就開始了。簡而言之,實施API優先的策略須要你在設計流程開始前就已經肯定下了。前端
傳統上,一旦發現問題而且有人意識到新系統可以提供必要的解決方案,軟件設計過程就開始了。一旦創建了普遍的草圖,下一步一般就會深刻挖掘以評估可能須要的任何用例和正在建立的系統所需的交互形式。固然,全部這一切都必須考慮到用戶體驗(UX),由於擁有一個有效的系統是不夠的; 對於即將與之交互的開發人員和使用者而言,它也須要對用戶友好,不管是在後端仍是在前端。後端
有時問題甚至更簡單,若是你有一個內部應用程序,其中包含你但願經過API訪問其餘系統的數據。可是,該系統有本身的邏輯,能夠告知其行爲和與他人的交互方式。所以,你建立的任何API都將圍繞這些特性和規則構建。一旦你的內部應用程序做爲API鏈接的一部分,開發人員就會根據系統的內部結構進行交互並附加上它。若是這是你想要的,那可能沒問題,但若是你之後須要對你的內部模型進行更改,就會出現問題。使用API優先方法進行設計意味着構建一個不只僅是內部系統副產品的API。api
開發人員應該可以快速又輕鬆地瞭解API的工做方式,並與其餘應用程序集成在一塊兒。只有這樣,他們才能編寫優雅的代碼,以便與其餘系統進行有效的交互,標準就是正確運行API時,它既向後兼容又往前擴展。架構
1.開發團隊能夠並行工做編輯器
簽定協議容許開發人員同時在API開發的不一樣階段工做,而無需等待應用程序更新所需的時間。所以,開發人員能夠根據預先創建的計劃模擬API並有效地測試任何相關的參數項,這樣就會無形中提升了總體的開發效率。工具
2.下降開發應用程序的成本學習
API優先設計方法的可重用性容許代碼從一個項目轉移到另外一個項目,以便開發團隊始終擁有可使用的基線架構。經過消除每次都要從頭開始編碼的須要,任何相關的時間和財務成本也一樣下降。此外,開發人員可以更快速地解決API問題,並且無需新建任何代碼,從而能夠更順暢地與其餘應用程序集成。測試
3.加快發佈速度優化
自動化支持的「可直觀查看」API使新手開發人員可以快速輕鬆地與API文檔進行交互。實際上,許多API構建過程可使用具備可視API編輯器的工具自動化,能夠導入API定義文件並自動生成文檔,甚至模擬API的返回結果。這些工具大大縮短了開發時間,提升了產品發佈的速度。編碼
最重要的是,使用API優先的方法,你仍然能夠靈活地添加新的應用程序產品功能,而無需從新設計API體系結構。這是敏捷開發的環境管理的一個明顯優點,所以預計應用程序更新將根據最終用戶需求快速發佈。
4.改善開發者體驗
開發人員天天都與API進行交互,所以建立一個提供積極的開發人員體驗(DX)的API相當重要。API第一種設計方法產生的API通過精心設計,而且具備良好的文檔記錄而且與其核心保持一致。開發人員可使用API更輕鬆地與其餘應用程序集成,快速解決出現的任何問題,甚至能夠在更短的時間內登錄其餘開發人員,這要歸功於不那麼強大的學習曲線。
5.下降失敗風險
對於大多數企業而言,API是開發環境中不可或缺的一部分,涉及從營銷和銷售到表明其品牌的、面向使用者的應用程序等全部內容。任何部分的API故障均可能是毀滅性的。可是,採用API設計優先的方法,因爲設計和實現的固有的可靠性,穩定性和一致性,大大下降了出錯的可能性。
API爲系統之間的通訊提供了統一的結構,不管是新的仍是傳統的,容許數據傳輸進行轉換。但API實施不只僅是一個IT問題,必須根據整個組織的目標設計API。經過將API策略置於設計流程的最前面,能夠改進系統之間的應用程序集成和互操做性,並在許多狀況下進行優化。並且若是更改,你仍然能夠選擇用其餘方式進行開發。
最有效的API設計包括如下屬性:
1.易於閱讀和使用:詳細全面且簡潔的API文檔易於閱讀,並提供支持開發人員使用的簡單示例。引用和參數都很是直觀,所以易於學習和記憶。
2.難以濫用:實現和集成API方式很容易區分,使開發人員很難濫用它,即便在編寫代碼時也是如此。它還包含信息反饋,同時容許開發人員具備至關程度的靈活性。
3.完整而簡潔: API很是全面,容許開發人員使用其通訊的數據,在可預見的將來,逐步構建完整的應用程序。這種穩定可用性和靈活性表明了每一個API建立者應該追求的設計理念的類型。
如今,有不少許多工具和標準能夠支持API優先開發,如EOLINKER、RAML、Swagger,都提供了出色的編輯工具來支持API優先設計的策略。EOLINKER主要在文檔頁面清晰,編輯邏輯簡易,支持自定義MOCK測試,並且支持UI直觀化的自動化測試,讀取代碼註釋生成文檔也能夠勝任,而Raml和Swagger頁面顯示也不錯,能夠編輯、測試等基本功能,不過相比EOLINKER,在自動化測試功能方面略顯不足,並且只有前者是支持中文的,後兩種只支持英文語言。這些API編輯器都能輕鬆地實現API版本的控制,使得更容易在更短的時間內完成整個開發測試流程。RAML、Swagger國外的網址我就不放連接,有興趣的點:EOLINKER
API優先的方法能夠對API的使用產生巨大的影響。若是你設計的API目標包括高使用率和保留率,或者提供給開發人員出色的開發體驗,那更是如此。最有效的API設計經過易於理解的內容和明確的目標導向提供直接的使用者體驗,從而實現快速集成和使用。一樣,隨着學習曲線的下降,API纔會享受其可重用性和讓開發人員的持續參與。
參考資料:David Brown,Implementing an API-First Design Methodology
原文地址:https://dzone.com/articles/implementing-an-api-first-design-methodology