API是什么?
都在說API,API到底是什么?
API是“應用程序編程接口”(Application Programming Interface)的縮寫,它是一套規(guī)則和定義,允許不同的軟件應用之間相互通信。簡單來說,API就像是軟件間的橋梁,讓一個程序能夠訪問另一個程序的服務、數(shù)據(jù)或功能,而無需了解其內部工作原理。正如電腦需要調用手機里面的信息,這時候你會拿一根數(shù)據(jù)線將電腦手機連接起來,電腦和手機上連接數(shù)據(jù)線的接口就是傳說中的API接口。
具體到實際開發(fā)場景中,假設研發(fā)人員A開發(fā)了軟件A,研發(fā)人員B正在研發(fā)軟件B。有一天,研發(fā)人員B想要調用軟件A的部分功能來用,但是他又不想從頭看一遍軟件A的源碼和功能實現(xiàn)過程,怎么辦呢?
研發(fā)人員A想了一個好主意:我把軟件A里你需要的功能打包好,寫成一個函數(shù);你按照我說的流程,把這個函數(shù)放在軟件B里,就能直接用我的功能了!
其中,API就是研發(fā)人員A說的那個函數(shù)。

什么是API First
強調在構建應用程序的開始階段,優(yōu)先做API設計,然后啟動軟件編碼。這種模式就是將API視為應用程序的核心,所有的后續(xù)研發(fā)流程都圍繞API設計契約進行。
【API First與Code First對比】
API First:API優(yōu)先,優(yōu)先API設計,開發(fā)、測試、部署、發(fā)布等圍繞API設計契約進行。
主要優(yōu)勢:
?團隊協(xié)作:API first促進團隊協(xié)作與分工合作。
?API一致性:API全生命周期流程中的數(shù)據(jù)的一致性。
?研發(fā)成本:解決問題所花費的成本。
Code First:代碼優(yōu)先,優(yōu)先領域模型與代碼設計,最后封裝API
主要優(yōu)勢:
?開發(fā)速度快:簡單的業(yè)務開發(fā)速度更快,適合業(yè)務簡單的小團隊。
CodeArts API:API設計的必備神器
華為云CodeArts API是一個為開發(fā)者精心打造的API 全生命周期管理一體化協(xié)作平臺,以API契約為錨點,踐行“API First”理念,支持開發(fā)者高效實現(xiàn) API 設計、開發(fā)、測試、托管、運維、變現(xiàn)的一站式體驗。
而API設計作為產(chǎn)品的核心,更是為開發(fā)者提供了靈活的API設計體驗。
支持Swagger原生編輯與可視化結構表單兩種API文檔設計模式。
在Swagger原生模式下,接口設計遵循OpenAPI規(guī)范,開發(fā)者能夠享受到專業(yè)的API規(guī)范檢測功能,輔助開發(fā)者修改API設計問題。
而對于追求直觀便捷操作的用戶,可視化表單編輯模式則成為理想之選,開發(fā)者無需再手動編寫YAML文件,轉而采用互動性強的圖形界面,僅需簡單填選,即便是API設計新手也能迅速完成參數(shù)配置,極大地降低了技術門檻,實現(xiàn)零學習成本即可上手API設計。
這兩種模式的并存,巧妙地滿足了不同技術水平開發(fā)者的需求,讓每個人都能根據(jù)自身偏好和經(jīng)驗水平,找到最適合自己的API設計途徑。
設計API
在設計接口文檔時,應針對以下要素進行設計:
接口基本信息、接口路徑、請求方式、接口請求參數(shù)接、口返回響應、安全方案
接口基本信息
名稱:每個接口應有一個唯一的標識符或名稱,便于識別和引用。
描述:簡短概述接口的功能和用途,包括它解決了什么問題或提供了哪些功能。
狀態(tài):標記接口的生命周期狀態(tài),如草稿、開發(fā)中、測試中、已上線、已廢棄等。
所屬目錄:接口在項目中所屬的目錄。
接口路徑
URL:完整的API調用地址,包括基礎URL和資源路徑,明確指出如何訪問該接口。
請求方法:指定調用接口時使用的HTTP方法,如GET、POST、PUT、DELETE等。
接口請求參數(shù)
Query參數(shù):接口請求中的一種參數(shù)傳遞方式,它通常用于傳遞一些可選的參數(shù),比如過濾條件、排序方式、分頁參數(shù)等。在URL中表現(xiàn)為末尾“?”后的字符串(如:“/car?owner=zhangsan”,那么“owner=zhangsan”即Query參數(shù),其中“owner”為參數(shù)的key,“zhangsan”為參數(shù)的value)。
Path參數(shù):也稱為“路徑參數(shù)”,是API請求中的一種參數(shù)傳遞方式。在URL中表現(xiàn)為大括號“{}”括起來的字符串(如:“/car/{owner}”,那么“{owner}”表示key為“owner”的Path參數(shù))。
Header參數(shù):請求頭中的參數(shù)。
Cookies:類型為“小型文本文件”,是某些網(wǎng)站為了辨別用戶身份,進行Session跟蹤而儲存在用戶本地終端上的數(shù)據(jù)(通常經(jīng)過加密),由用戶客戶端計算機暫時或永久保存的信息。
前置腳本:在請求發(fā)送前執(zhí)行的代碼片段。
后置腳本:在請求發(fā)送后執(zhí)行的代碼片段,主要用于驗證請求返回的結果(斷言)、將請求返回的結果數(shù)據(jù)寫入環(huán)境變量等場景。
請求體:對于POST、PUT等請求,詳細說明請求主體中需要的JSON或表單數(shù)據(jù)格式,包括字段名稱、類型、是否必填、默認值及描述。
接口返回響應
返回響應的狀態(tài)碼:通過加號來添加運行接口后可能的響應狀態(tài)碼,單擊響應狀態(tài)碼可以對狀態(tài)碼進行修改。
響應內容的數(shù)據(jù)結構:規(guī)定響應內容的格式,分為“application/json”、“application/xml”、“text/plain”三種,“application/json”和“application/xml”兩種情況下可以對響應內容的結構進行進一步定義,如:響應內容為“application/json”,規(guī)定json內容里的參數(shù)類型等。
響應示例:響應內容的示例。
響應頭:返回響應的Header。
安全方案
OpenAPI規(guī)范中,安全模型對應OpenAPI3.0的components.securitySchemes。大部分的Web服務都需要經(jīng)過身份認證才能訪問,security就是用于描述API的安全信息和訪問授權協(xié)議等信息的對象,Open API支持的最常見授權方案如下:
API key
HTTP
Oauth2.0
OpenID Connect