每個開發(fā)人員對API
這詞應(yīng)該都挺熟悉的,API
是軟件系統(tǒng)之間或不同組成部分之間進行連接的約定。特別是移動應(yīng)用程序和微服務(wù)架構(gòu)的不斷普及,API
就是他們成功背后的功臣,這個時候如何設(shè)計和開發(fā)API
就顯得格外重要,今天這篇文章就是一份完整的API
開發(fā)指南,介紹了在開發(fā)API
過程中的內(nèi)容、工具和最佳實踐。
一、API介紹
API
它的全稱是Application Programming Interface
——應(yīng)用程序編程接口,是一組指令、標準或要求,使軟件或應(yīng)用程序可以利用另一應(yīng)用程序、平臺或設(shè)備的功能/服務(wù)來獲得更好的服務(wù)。簡而言之,它可以讓應(yīng)用程序彼此通信。例如,當我們在使用支付寶、微信APP時,都會通過API請求后臺服務(wù)器上的數(shù)據(jù),在APP上進行展示。
API
是處理數(shù)據(jù)或啟動兩個產(chǎn)品或服務(wù)之間的通信的所有應(yīng)用程序的基礎(chǔ)。它使移動應(yīng)用程序或平臺能夠與其他應(yīng)用程序或平臺共享其數(shù)據(jù),并在不涉及開發(fā)人員的情況下簡化用戶體驗。最重要的是,API
消除了從頭開始構(gòu)建類似程序或平臺的需求。您可以使用其他一些應(yīng)用程序/平臺中的現(xiàn)有應(yīng)用程序?;谶@些原因,應(yīng)用程序開發(fā)人員和業(yè)務(wù)主管都將重點放在API
開發(fā)上。
在深入研究之前,先讓我們看一下使您更容易理解該概念的基本術(shù)語。
二、API術(shù)語
- API Key:當一個API請求通過
Header
或參數(shù)來識別調(diào)用者時,傳遞到請求中的授權(quán)碼就是API Key
。
- Endpoint:當一個
API
與另一個系統(tǒng)交互時,通信通道的兩端被認為是Endpoint
。
- JSON:是用于
API
請求參數(shù)和響應(yīng)主體的數(shù)據(jù)格式。
- GET:
RESTful API
的HTTP
方法,用于獲取資源。
- POST:
RESTful API
的HTTP
方法,用于創(chuàng)建資源。
- OAuth:它基本上是一個開放標準的授權(quán)框架,可以在不直接共享憑據(jù)的情況下從客戶端進行訪問。
- REST:
REST
(代表性狀態(tài)轉(zhuǎn)移)是一種編程體系結(jié)構(gòu)的實現(xiàn),用于提供兩個設(shè)備/系統(tǒng)之間的通信效率。它是一個輕量級的,他是通過數(shù)據(jù)引用而不是數(shù)據(jù)副本的方式來共享數(shù)據(jù),基于這個架構(gòu)創(chuàng)建的系統(tǒng)稱為“RESTful
”系統(tǒng),而RESTful
系統(tǒng)中最著名的例子就是萬維網(wǎng)。
- SOAP:
SOAP
或簡單對象訪問協(xié)議是一種消息協(xié)議,用于在計算機網(wǎng)絡(luò)中執(zhí)行Web
服務(wù)時共享結(jié)構(gòu)化信息。它與XML
信息集和應(yīng)用程序?qū)訁f(xié)議(如HTTP
和SMTP
)一起使用,分別用于消息格式和消息協(xié)商與傳輸。
- 延遲:延遲定義為
API
從請求到響應(yīng)的過程中所花費的總時間。
- 速率限制:
API
速率限制是指定義最終用戶可以訪問API
的速率的過程。也就是說限制用戶每次可以向API
發(fā)送的請求數(shù)。
- API限流:調(diào)節(jié)用戶在特定時間段內(nèi)使用
API
的過程稱為限流。這可以用于API
限制,比如,設(shè)置每天限制1000個API
請求,當用戶點擊1001個請求時,服務(wù)器會返回429
的HTTP
狀態(tài)碼,并帶著“請求太多”的消息。
三、API的工作流程
假如打開一些旅游應(yīng)用程序/網(wǎng)站來預(yù)訂航班,再填寫了表格——輸入了出發(fā)和返回日期,城市,航班以及其他相關(guān)詳細信息——并提交了。只需幾秒鐘,屏幕上就會顯示航班清單以及價格,時間,座位可用性以及其他詳細信息。
為了提供這樣嚴格的數(shù)據(jù),該平臺向航空公司的網(wǎng)站發(fā)送了請求,以訪問其數(shù)據(jù)庫并通過API
獲取相關(guān)數(shù)據(jù)。網(wǎng)站以API
形式傳遞給平臺數(shù)據(jù)作為響應(yīng),平臺將其顯示在屏幕上,基本的過程如下:
在此,航班預(yù)訂應(yīng)用程序/平臺和航空公司的網(wǎng)站充當端點(EndPoint
),而API
充當簡化數(shù)據(jù)共享過程的中介。在談?wù)摱它c通信時,API
有兩種形式,即REST
和SOAP
。盡管這兩種方法都能帶來有效的結(jié)果,但目前移動應(yīng)用開發(fā)程序更喜歡使用REST
而不是SOAP
,因為SOAP API
繁重且依賴于平臺。
下面就介紹一下如何開發(fā)API?選擇哪些工具和技術(shù)?
四、開發(fā)API的工具
在開發(fā)API
的過程中有許多工具和技術(shù)可以使用,下面介紹幾個用于為開發(fā)人員開發(fā)API的流行工具:
- Apigee:它是
Google
的API
管理工具,通過重新建立API
方法來幫助開發(fā)人員和企業(yè)家在數(shù)字化轉(zhuǎn)型方面取得成功。
- APIMatic and API Transformer:提供了復(fù)雜的自動生成工具,通過
API
特定格式構(gòu)建高質(zhì)量的SDK
和代碼片段,并將其轉(zhuǎn)換為其他規(guī)范的形式,如RAML
,API Blueprint
等等。
- API Science:該工具主要用于評估內(nèi)部
API
和外部API的性能。
- API Serverless Architecture:該產(chǎn)品借助云的服務(wù)器基礎(chǔ)架構(gòu)協(xié)助移動應(yīng)用程序開發(fā)人員設(shè)計、構(gòu)建、發(fā)布和托管API。
- API Platform:這是一個適用于
Web API
開發(fā)的開源PHP
框架。
- OAuth2:這是一種用于身份驗證和授權(quán)
API
的身份管理解決方案。
- ClearBlade:這是一個
API
管理程序,用于將IOT
技術(shù)融入流程中。
- GitHub:這是一個開源的
Git
存儲庫,用來托管代碼服務(wù),可以提交代碼、發(fā)布請求,版本控制。還可以將代碼保存在私有存儲庫中。
- Postman:這是一個
API
工具鏈,使開發(fā)人員能夠運行、測試、記錄和評估其API
的性能。
五、高效API的特性
- 修改時間戳/按條件搜索:
API
應(yīng)該允許用戶根據(jù)不同的條件(例如日期)搜索數(shù)據(jù),并能對檢索的數(shù)據(jù)進行修改(更新,編輯和刪除),并能記錄修改的時間戳。
- 分頁:當數(shù)據(jù)量很大的時候,我們不希望每次都獲取完整的數(shù)據(jù)列表。在這種情況下,
API
應(yīng)該能夠確定一次顯示多少數(shù)據(jù)以及總頁數(shù),還應(yīng)告知最終用戶剩余的數(shù)據(jù)頁數(shù)。
- 排序:
API
應(yīng)授權(quán)用戶根據(jù)修改時間或其他條件對數(shù)據(jù)進行排序。
- JSON支持/ REST:盡量使用
RESTful
風格進行有效的API
開發(fā)。REST API
是無狀態(tài)的,輕量級的。此外,JSON
的語法類似于大多數(shù)編程語言的語法,這使移動應(yīng)用程序開發(fā)人員可以輕松地將其解析為任何其他語言。
- 通過OAuth進行授權(quán):由于
API
需要對外暴露,因此還需要通過OAuth
進行授權(quán)-您只需單擊一個按鈕即可完成。
六、構(gòu)建API的最佳實踐
- 流量限制:流量限制是考慮流量溢出,并保護其免受
Dos攻擊
的一種好習慣。
- 將API網(wǎng)關(guān)視為增強點:在設(shè)置限制規(guī)則、
API
秘鑰和OAuth
的應(yīng)用時,必須將API
網(wǎng)關(guān)視為最佳實施點。只有正確的、合法的用戶才能訪問后面的數(shù)據(jù),并能在網(wǎng)關(guān)這里加密消息或編輯私密消息,從而分析和管理API
。
- 允許覆蓋HTTP方法:由于某些代理僅支持
GET
和POST
方法,因此需要讓RESTful API
覆蓋HTTP
方法,可以使用自動以HTTP
頭X-HTTP-Method-Override
。
- 評估API和基礎(chǔ)結(jié)構(gòu):當前,實時分析是可以實現(xiàn)的,但是如果
API
服務(wù)器存在內(nèi)存泄漏、CPU
耗盡或其他問題該怎么辦?考慮到這種情況,可以使用一些工具來對API
進行評估和排查。
- 文檔:為
API
編寫文檔,可以使用OpenAPI
的規(guī)范的格式,這樣其他應(yīng)用程序開發(fā)人員可以輕松的了解整個過程并利用這些信息來提供更好的用戶體驗??傊?,良好的API
文檔可以減少項目實施的時間,提供API
開發(fā)的效率。
以上就是一份關(guān)于API開發(fā)的指南文檔了,希望對大家有所幫助。想了解更多的話,可以看一下相關(guān)文檔
io.js API 中文文檔:http://o2fo.com/fkcaso/
Fetch API官方文檔:http://o2fo.com/fetch_api/
文章參考來源:appinventiv.com/blog/complete-guide-to-api-development/