App下載

還在為開發(fā)API煩惱嗎?一份API開發(fā)指南獻(xiàn)上

猿友 2020-08-03 12:01:14 瀏覽數(shù) (3553)
反饋

每個(gè)開發(fā)人員對(duì)API這詞應(yīng)該都挺熟悉的,API是軟件系統(tǒng)之間或不同組成部分之間進(jìn)行連接的約定。特別是移動(dòng)應(yīng)用程序和微服務(wù)架構(gòu)的不斷普及,API就是他們成功背后的功臣,這個(gè)時(shí)候如何設(shè)計(jì)和開發(fā)API就顯得格外重要,今天這篇文章就是一份完整的API開發(fā)指南,介紹了在開發(fā)API過(guò)程中的內(nèi)容、工具和最佳實(shí)踐。

一、API介紹

API它的全稱是Application Programming Interface——應(yīng)用程序編程接口,是一組指令、標(biāo)準(zhǔn)或要求,使軟件或應(yīng)用程序可以利用另一應(yīng)用程序、平臺(tái)或設(shè)備的功能/服務(wù)來(lái)獲得更好的服務(wù)。簡(jiǎn)而言之,它可以讓應(yīng)用程序彼此通信。例如,當(dāng)我們?cè)谑褂弥Ц秾殹⑽⑿臕PP時(shí),都會(huì)通過(guò)API請(qǐng)求后臺(tái)服務(wù)器上的數(shù)據(jù),在APP上進(jìn)行展示。

API是處理數(shù)據(jù)或啟動(dòng)兩個(gè)產(chǎn)品或服務(wù)之間的通信的所有應(yīng)用程序的基礎(chǔ)。它使移動(dòng)應(yīng)用程序或平臺(tái)能夠與其他應(yīng)用程序或平臺(tái)共享其數(shù)據(jù),并在不涉及開發(fā)人員的情況下簡(jiǎn)化用戶體驗(yàn)。最重要的是,API消除了從頭開始構(gòu)建類似程序或平臺(tái)的需求。您可以使用其他一些應(yīng)用程序/平臺(tái)中的現(xiàn)有應(yīng)用程序?;谶@些原因,應(yīng)用程序開發(fā)人員和業(yè)務(wù)主管都將重點(diǎn)放在API開發(fā)上。

在深入研究之前,先讓我們看一下使您更容易理解該概念的基本術(shù)語(yǔ)。

二、API術(shù)語(yǔ)

  1. API Key:當(dāng)一個(gè)API請(qǐng)求通過(guò)Header或參數(shù)來(lái)識(shí)別調(diào)用者時(shí),傳遞到請(qǐng)求中的授權(quán)碼就是API Key

  1. Endpoint:當(dāng)一個(gè)API與另一個(gè)系統(tǒng)交互時(shí),通信通道的兩端被認(rèn)為是Endpoint

  1. JSON:是用于API請(qǐng)求參數(shù)和響應(yīng)主體的數(shù)據(jù)格式。

  1. GETRESTful APIHTTP方法,用于獲取資源。

  1. POSTRESTful APIHTTP方法,用于創(chuàng)建資源。

  1. OAuth:它基本上是一個(gè)開放標(biāo)準(zhǔn)的授權(quán)框架,可以在不直接共享憑據(jù)的情況下從客戶端進(jìn)行訪問(wèn)。

  1. RESTREST(代表性狀態(tài)轉(zhuǎn)移)是一種編程體系結(jié)構(gòu)的實(shí)現(xiàn),用于提供兩個(gè)設(shè)備/系統(tǒng)之間的通信效率。它是一個(gè)輕量級(jí)的,他是通過(guò)數(shù)據(jù)引用而不是數(shù)據(jù)副本的方式來(lái)共享數(shù)據(jù),基于這個(gè)架構(gòu)創(chuàng)建的系統(tǒng)稱為“RESTful”系統(tǒng),而RESTful系統(tǒng)中最著名的例子就是萬(wàn)維網(wǎng)。

  1. SOAPSOAP或簡(jiǎn)單對(duì)象訪問(wèn)協(xié)議是一種消息協(xié)議,用于在計(jì)算機(jī)網(wǎng)絡(luò)中執(zhí)行Web服務(wù)時(shí)共享結(jié)構(gòu)化信息。它與XML信息集和應(yīng)用程序?qū)訁f(xié)議(如HTTPSMTP)一起使用,分別用于消息格式和消息協(xié)商與傳輸。

  1. 延遲:延遲定義為API從請(qǐng)求到響應(yīng)的過(guò)程中所花費(fèi)的總時(shí)間。

  1. 速率限制API速率限制是指定義最終用戶可以訪問(wèn)API的速率的過(guò)程。也就是說(shuō)限制用戶每次可以向API發(fā)送的請(qǐng)求數(shù)。

  1. API限流:調(diào)節(jié)用戶在特定時(shí)間段內(nèi)使用API的過(guò)程稱為限流。這可以用于API限制,比如,設(shè)置每天限制1000個(gè)API請(qǐng)求,當(dāng)用戶點(diǎn)擊1001個(gè)請(qǐng)求時(shí),服務(wù)器會(huì)返回429HTTP狀態(tài)碼,并帶著“請(qǐng)求太多”的消息。

三、API的工作流程

假如打開一些旅游應(yīng)用程序/網(wǎng)站來(lái)預(yù)訂航班,再填寫了表格——輸入了出發(fā)和返回日期,城市,航班以及其他相關(guān)詳細(xì)信息——并提交了。只需幾秒鐘,屏幕上就會(huì)顯示航班清單以及價(jià)格,時(shí)間,座位可用性以及其他詳細(xì)信息。

為了提供這樣嚴(yán)格的數(shù)據(jù),該平臺(tái)向航空公司的網(wǎng)站發(fā)送了請(qǐng)求,以訪問(wèn)其數(shù)據(jù)庫(kù)并通過(guò)API獲取相關(guān)數(shù)據(jù)。網(wǎng)站以API形式傳遞給平臺(tái)數(shù)據(jù)作為響應(yīng),平臺(tái)將其顯示在屏幕上,基本的過(guò)程如下:

API的工作流程

在此,航班預(yù)訂應(yīng)用程序/平臺(tái)和航空公司的網(wǎng)站充當(dāng)端點(diǎn)(EndPoint),而API充當(dāng)簡(jiǎn)化數(shù)據(jù)共享過(guò)程的中介。在談?wù)摱它c(diǎn)通信時(shí),API有兩種形式,即RESTSOAP。盡管這兩種方法都能帶來(lái)有效的結(jié)果,但目前移動(dòng)應(yīng)用開發(fā)程序更喜歡使用REST而不是SOAP,因?yàn)?code>SOAP API繁重且依賴于平臺(tái)。

下面就介紹一下如何開發(fā)API?選擇哪些工具和技術(shù)?

四、開發(fā)API的工具

在開發(fā)API的過(guò)程中有許多工具和技術(shù)可以使用,下面介紹幾個(gè)用于為開發(fā)人員開發(fā)API的流行工具:

  1. Apigee:它是GoogleAPI管理工具,通過(guò)重新建立API方法來(lái)幫助開發(fā)人員和企業(yè)家在數(shù)字化轉(zhuǎn)型方面取得成功。

  1. APIMatic and API Transformer:提供了復(fù)雜的自動(dòng)生成工具,通過(guò)API特定格式構(gòu)建高質(zhì)量的SDK和代碼片段,并將其轉(zhuǎn)換為其他規(guī)范的形式,如RAML,API Blueprint等等。

  1. API Science:該工具主要用于評(píng)估內(nèi)部API和外部API的性能。

  1. API Serverless Architecture:該產(chǎn)品借助云的服務(wù)器基礎(chǔ)架構(gòu)協(xié)助移動(dòng)應(yīng)用程序開發(fā)人員設(shè)計(jì)、構(gòu)建、發(fā)布和托管API。

  1. API Platform:這是一個(gè)適用于Web API開發(fā)的開源PHP框架。

  1. OAuth2:這是一種用于身份驗(yàn)證和授權(quán)API的身份管理解決方案。

  1. ClearBlade:這是一個(gè)API管理程序,用于將IOT技術(shù)融入流程中。

  1. GitHub:這是一個(gè)開源的Git存儲(chǔ)庫(kù),用來(lái)托管代碼服務(wù),可以提交代碼、發(fā)布請(qǐng)求,版本控制。還可以將代碼保存在私有存儲(chǔ)庫(kù)中。

  1. Postman:這是一個(gè)API工具鏈,使開發(fā)人員能夠運(yùn)行、測(cè)試、記錄和評(píng)估其API的性能。

五、高效API的特性

高效API的特性

  1. 修改時(shí)間戳/按條件搜索API應(yīng)該允許用戶根據(jù)不同的條件(例如日期)搜索數(shù)據(jù),并能對(duì)檢索的數(shù)據(jù)進(jìn)行修改(更新,編輯和刪除),并能記錄修改的時(shí)間戳。

  1. 分頁(yè):當(dāng)數(shù)據(jù)量很大的時(shí)候,我們不希望每次都獲取完整的數(shù)據(jù)列表。在這種情況下,API應(yīng)該能夠確定一次顯示多少數(shù)據(jù)以及總頁(yè)數(shù),還應(yīng)告知最終用戶剩余的數(shù)據(jù)頁(yè)數(shù)。

  1. 排序API應(yīng)授權(quán)用戶根據(jù)修改時(shí)間或其他條件對(duì)數(shù)據(jù)進(jìn)行排序。

  1. JSON支持/ REST:盡量使用RESTful風(fēng)格進(jìn)行有效的API開發(fā)。REST API是無(wú)狀態(tài)的,輕量級(jí)的。此外,JSON的語(yǔ)法類似于大多數(shù)編程語(yǔ)言的語(yǔ)法,這使移動(dòng)應(yīng)用程序開發(fā)人員可以輕松地將其解析為任何其他語(yǔ)言。

  1. 通過(guò)OAuth進(jìn)行授權(quán):由于API需要對(duì)外暴露,因此還需要通過(guò)OAuth進(jìn)行授權(quán)-您只需單擊一個(gè)按鈕即可完成。

六、構(gòu)建API的最佳實(shí)踐

  1. 流量限制:流量限制是考慮流量溢出,并保護(hù)其免受Dos攻擊的一種好習(xí)慣。

  1. 將API網(wǎng)關(guān)視為增強(qiáng)點(diǎn):在設(shè)置限制規(guī)則、API 秘鑰和OAuth的應(yīng)用時(shí),必須將API網(wǎng)關(guān)視為最佳實(shí)施點(diǎn)。只有正確的、合法的用戶才能訪問(wèn)后面的數(shù)據(jù),并能在網(wǎng)關(guān)這里加密消息或編輯私密消息,從而分析和管理API

  1. 允許覆蓋HTTP方法:由于某些代理僅支持GETPOST方法,因此需要讓RESTful API 覆蓋HTTP方法,可以使用自動(dòng)以HTTPX-HTTP-Method-Override。

  1. 評(píng)估API和基礎(chǔ)結(jié)構(gòu):當(dāng)前,實(shí)時(shí)分析是可以實(shí)現(xiàn)的,但是如果API服務(wù)器存在內(nèi)存泄漏、CPU耗盡或其他問(wèn)題該怎么辦?考慮到這種情況,可以使用一些工具來(lái)對(duì)API進(jìn)行評(píng)估和排查。

  1. 文檔:為API編寫文檔,可以使用OpenAPI的規(guī)范的格式,這樣其他應(yīng)用程序開發(fā)人員可以輕松的了解整個(gè)過(guò)程并利用這些信息來(lái)提供更好的用戶體驗(yàn)??傊?,良好的API文檔可以減少項(xiàng)目實(shí)施的時(shí)間,提供API開發(fā)的效率。

以上就是一份關(guān)于API開發(fā)的指南文檔了,希望對(duì)大家有所幫助。想了解更多的話,可以看一下相關(guān)文檔

io.js API 中文文檔:http://m.hgci.cn/fkcaso/

Fetch API官方文檔:http://m.hgci.cn/fetch_api/

文章參考來(lái)源:appinventiv.com/blog/complete-guide-to-api-development/

0 人點(diǎn)贊