產(chǎn)品經(jīng)理必備知識——API接口
進(jìn)入互聯(lián)網(wǎng)時代之后,API接口的出現(xiàn)為不同應(yīng)用程序搭建起了橋梁,那么,你是否真的了解API呢?這篇文章里,作者對API接口的分類、原理、API接口的請求方式等問題進(jìn)行了總結(jié),一起來看。
在古代,我們的傳輸信息的方式有很多,比如寫信、飛鴿傳書,以及在戰(zhàn)爭中使用的烽煙,才有了著名的烽火戲諸侯,但這些方式傳輸信息的效率終究還是無法滿足高速發(fā)展的社會需要。如今萬物互聯(lián)的時代,我通過一部手機(jī)就可以實(shí)現(xiàn)衣食住行的方方面面,比如:在家購物、遠(yuǎn)程控制家電、自動駕駛等等,背后都離不開我們今天要聊的API接口。
一、什么是API及其重要性
API接口是應(yīng)用程序編程接口(Application Programming Interface)的縮寫,是一種預(yù)先定義的函數(shù),目的是提供應(yīng)用程序與開發(fā)人員基于某軟件或硬件得以訪問一組例程的能力。簡單來說,API就是讓不同的軟件之間可以互相通信、協(xié)作的工具。
在當(dāng)今數(shù)字化時代,互聯(lián)網(wǎng)已經(jīng)成為人們生活和工作中不可或缺的一部分。而API接口則是連接不同應(yīng)用程序的重要橋梁,它使得不同的應(yīng)用程序之間可以進(jìn)行數(shù)據(jù)交換、信息共享,從而提高工作效率、降低成本,推動數(shù)字化轉(zhuǎn)型進(jìn)程。
比如我們現(xiàn)在看到很多app打開都會彈出請求定位服務(wù)的彈窗,本質(zhì)就是 GPS服務(wù)商提供了精準(zhǔn)位置的API接口,app通過調(diào)用API接口獲取設(shè)備的經(jīng)緯度參數(shù)。
如果你選擇允許,app就會根據(jù)你的當(dāng)前位置為你提供更加個性化的一些服務(wù),當(dāng)然也有一些app拿到你的位置信息做出損害用戶利益的行為,所以還是需要謹(jǐn)慎授權(quán)。
二、API接口的分類和原理
API接口按類型分類 API接口可以根據(jù)其使用方式的不同進(jìn)行分類,常見的有:
遠(yuǎn)程過程調(diào)用(RPC):通過發(fā)送請求和響應(yīng)消息的方式實(shí)現(xiàn)程序間的通信。RPC的設(shè)計類似于普通的過程調(diào)用,就如同在本地調(diào)用API一樣。RPC API通常使用二進(jìn)制壓縮格式傳遞消息,目的就是提高傳輸效率,但這通常需要在客戶端安裝指定的庫(也就是所謂的存根),這些庫與單個API一起工作。
遠(yuǎn)程函數(shù)調(diào)用(RFC):類似于RPC,但是更加靈活,允許客戶端直接調(diào)用服務(wù)器上的函數(shù)。
消息傳遞接口(MPI):一種基于消息傳遞的通信方式,常用于分布式系統(tǒng)中。
通用對象訪問協(xié)議(CORBA):一種面向?qū)ο蟮耐ㄐ艆f(xié)議,允許不同操作系統(tǒng)之間的對象之間的相互交互。
API接口的原理介紹 API接口的原理其實(shí)就是利用網(wǎng)絡(luò)協(xié)議來實(shí)現(xiàn)不同應(yīng)用程序之間的通信。當(dāng)一個應(yīng)用程序需要調(diào)用另一個應(yīng)用程序中的某個功能時,它會向目標(biāo)應(yīng)用程序發(fā)送一條請求消息,目標(biāo)應(yīng)用程序接收到請求后會進(jìn)行處理并返回相應(yīng)的響應(yīng)消息給發(fā)起請求的應(yīng)用程序。這個過程中涉及到了網(wǎng)絡(luò)協(xié)議、數(shù)據(jù)傳輸格式、數(shù)據(jù)加密等多個方面的知識。
三、API接口的請求方式
1. GET方法
GET方法是最常見的一種API請求方式,它的作用是向指定資源發(fā)出請求并返回實(shí)體主體內(nèi)容。比如:當(dāng)我們在瀏覽器中輸入一個URL地址時,瀏覽器就會發(fā)送一個GET請求到服務(wù)器上獲取相應(yīng)的網(wǎng)頁內(nèi)容,可以理解為只讀。
- 使用:用”?”連接,多個參數(shù)間用”&”連接(URL末尾;
- 應(yīng)用場景:eg:請求數(shù)據(jù):查詢,菜單列表,搜索等數(shù)據(jù)的請求;
- 特點(diǎn):數(shù)據(jù)量較小,返回速度快,接口暴露在外,存在風(fēng)險。
2. POST方法
POST方法是向指定資源提交數(shù)據(jù)進(jìn)行處理請求,它通常用于提交表單、上傳文件等操作。比如:當(dāng)我們在網(wǎng)站上填寫表單并點(diǎn)擊提交按鈕時,瀏覽器就會將表單數(shù)據(jù)以POST請求的方式發(fā)送到服務(wù)器上進(jìn)行處理,可以理解為創(chuàng)建。
- 使用:特定地方(提交、上傳的地方)提交數(shù)據(jù)來進(jìn)行請求;
- 應(yīng)用場景:eg:注冊、上傳、等功能;
- 特點(diǎn):請求數(shù)據(jù)量大,安全性要求高。
3. PUT方法
PUT方法是向指定資源位置上上傳其最新內(nèi)容的操作,它通常用于更新已有的資源信息。比如:當(dāng)我們在網(wǎng)站上編輯一篇文章并保存時,服務(wù)器就會將最新的文章內(nèi)容以PUT請求的方式覆蓋原有的文章信息,可以理解為修改。
4. DELETE方法
DELETE方法是請求服務(wù)器刪除request-URL所標(biāo)示的資源的操作,它通常用于刪除指定的頁面或者資源。比如:當(dāng)我們在瀏覽器中打開一個錯誤的頁面時,我們可以點(diǎn)擊瀏覽器上的“刷新”按鈕或者按下“Delete”鍵來請求服務(wù)器刪除該頁面。
5. OPTIONS方法
OPTIONS方法是HTTP協(xié)議中的一個預(yù)檢請求方法,它用于獲取目標(biāo)資源的通信選項(xiàng)等信息。比如:當(dāng)我們在瀏覽器中打開一個跨域資源共享(CORS)的網(wǎng)頁時,瀏覽器會先發(fā)送一個OPTIONS請求到服務(wù)器上獲取該資源的允許跨域訪問的信息。
6. HEAD方法
HEAD方法是HTTP協(xié)議中的一個非響應(yīng)性請求方法,它用于獲取目標(biāo)資源的頭部信息,不會返回實(shí)際的數(shù)據(jù)內(nèi)容。比如:當(dāng)我們在瀏覽器中查看一個網(wǎng)頁的源代碼時,我們可以使用瀏覽器上的“查看頁面源代碼”功能來發(fā)送一個HEAD請求到服務(wù)器上獲取該網(wǎng)頁的頭部信息。
四、接口響應(yīng)機(jī)制
- 同步交互:發(fā)送一個請求,需要等待返回,然后才能夠發(fā)送下一個請求,需要等待,即用戶行為請求成功后(如登錄、支付),需要返回驗(yàn)證結(jié)果后,才能登錄或支付成功。
- 異步交互:發(fā)送一個請求,不需要等待返回,隨時可以再發(fā)送下一個請求,不需要等待,即用戶行為請求成功后,系統(tǒng)收到請求后異步同步結(jié)果,調(diào)用方無須等待每個請求的調(diào)用結(jié)果。
五、API接口的安全機(jī)制
1.簽名驗(yàn)證機(jī)制的實(shí)現(xiàn)方式和作用:API接口通常會對請求進(jìn)行簽名驗(yàn)證以確保數(shù)據(jù)的完整性和安全性。簽名驗(yàn)證機(jī)制可以通過多種方式實(shí)現(xiàn),其中最常見的是采用HMAC算法和數(shù)字證書技術(shù)。
HMAC算法是一種基于哈希函數(shù)的消息認(rèn)證碼算法,它可以生成一個固定長度的隨機(jī)字符串作為簽名值;數(shù)字證書則是一種由權(quán)威機(jī)構(gòu)頒發(fā)的電子憑證,可以用來證明公鑰的合法性和身份的真實(shí)性。通過簽名驗(yàn)證機(jī)制可以有效地防止惡意攻擊和數(shù)據(jù)篡改等問題的發(fā)生。
2.OAuth授權(quán)機(jī)制的實(shí)現(xiàn)方式和作用:OAuth授權(quán)機(jī)制是一種常用的API接口安全機(jī)制,它通過將用戶的身份認(rèn)證和數(shù)據(jù)訪問權(quán)限分離開來來保證系統(tǒng)的安全性。
具體來說,OAuth授權(quán)機(jī)制包括以下幾個步驟:用戶向第三方應(yīng)用發(fā)起授權(quán)請求;第三方應(yīng)用將用戶的授權(quán)信息發(fā)送給目標(biāo)API接口;目標(biāo)API接口根據(jù)授權(quán)信息判斷用戶是否有權(quán)訪問該資源;如果用戶有權(quán)訪問該資源,則返回相應(yīng)的數(shù)據(jù)內(nèi)容;否則返回錯誤信息或者拒絕訪問。通過OAuth授權(quán)機(jī)制可以有效地保護(hù)用戶的隱私和數(shù)據(jù)安全。
3.SSL/TLS安全協(xié)議在API接口中的應(yīng)用:SSL/TLS安全協(xié)議是一種廣泛使用的網(wǎng)絡(luò)安全協(xié)議,它可以為數(shù)據(jù)傳輸提供加密和認(rèn)證服務(wù)。在API接口中,SSL/TLS安全協(xié)議可以用來保護(hù)數(shù)據(jù)的機(jī)密性和完整性,防止數(shù)據(jù)被竊取或者篡改。
具體來說,SSL/TLS安全協(xié)議可以通過握手協(xié)議來建立安全通道;通過對數(shù)據(jù)進(jìn)行加密和解密來保證數(shù)據(jù)的機(jī)密性;通過對證書進(jìn)行驗(yàn)證來保證數(shù)據(jù)的完整性和合法性。通過SSL/TLS安全協(xié)議的應(yīng)用可以有效地提高API接口的安全性和可靠性。
以上3種API的安全機(jī)制都是基于在不同的業(yè)務(wù)場景中使用,通俗來講,就是誰可以訪問這個接口,通過什么樣的方式訪問,訪問的權(quán)限范圍有哪些。差異在于不同安全機(jī)制的成本和身份驗(yàn)證的方式不同(對應(yīng)的要求不同)。
舉個簡單例子,你想進(jìn)一個相對不那么封閉的場所,只需要和里面認(rèn)識的人打個招呼,就會放你進(jìn)去。但是像坐飛機(jī)這樣對身份識別要求比較高的“場所”,需要你有相關(guān)的證件(身份公證)才能進(jìn)入,以及你登機(jī)之后由于你的身份是乘客你只能在客艙,是不能進(jìn)入駕駛艙操縱飛機(jī)。
六、API接口速率限制
我們要考慮的最后一種安全機(jī)制是用來防御惡意或偶然的DoS攻擊,確??捎眯缘臋C(jī)制。DoS攻擊的原理是發(fā)送大量合法請求,導(dǎo)致API需要的資源被耗盡。這些資源包括CPU時間、內(nèi)存和磁盤使用率、電源等。
通過向API中注入大量的虛假請求,這些資源將全部被用于服務(wù)這些請求,而無暇顧及其他。除了發(fā)送大量的請求外,攻擊者還可能發(fā)送消耗大量內(nèi)存的超大請求,或者發(fā)送慢速請求,這些都會導(dǎo)致資源長時間被占用,并且惡意用戶不需要花費(fèi)太多精力。
抵御這些攻擊的關(guān)鍵是要能識別出一個客戶端(或一組客戶端)使用的資源(時間、內(nèi)存、連接數(shù)等)超過了它的合理份額。通過限制用戶可使用的資源,就可以降低這種攻擊風(fēng)險。一旦用戶通過身份驗(yàn)證,應(yīng)用程序就可以強(qiáng)制為用戶指定配額(quota)資源,限制他們可以執(zhí)行的操作。
比如,你可以限制每個用戶每小時只能發(fā)送一定數(shù)量的API請求,防止他們發(fā)送大量的請求來沖擊系統(tǒng)。采用計費(fèi)的方式來限制用戶請求,既有商業(yè)目的,也有安全方面的考量。
七、API接口文檔
前面講到的關(guān)于接口的請求方式、類型、原理、安全機(jī)制等,產(chǎn)品經(jīng)理能夠簡單了解一些就可以滿足日常工作中的需要。接口文檔是產(chǎn)品經(jīng)理日常工作中經(jīng)常會使用到的,特別是做開放平臺或B端的產(chǎn)品經(jīng)理,需要經(jīng)常的看和寫接口文檔。
那如何看接口文檔呢?首先,看接口文檔的場景一般是自身業(yè)務(wù)模塊需要獲取外部的數(shù)據(jù),但又不想自己重新開發(fā),尋找外部已經(jīng)實(shí)現(xiàn)的有開放能力的供應(yīng)商(包含企業(yè)內(nèi)部的)。比如淘寶開放平臺、微信開放平臺等等,需要獲取淘寶訂單或者使用微信支付,不需要自己開發(fā)對應(yīng)的工具,可以調(diào)用對方的開放接口。
接口文檔一般包含三個部分,即接口說明(簽名獲取方法、訪問頻率和并發(fā)、錯誤碼)、接口參數(shù)(包括請求參數(shù)和返回參數(shù))以及接口代碼示例。
其次,是要明確自身的業(yè)務(wù)需求,需要通過外部接口獲取什么能力,具體到需要什么參數(shù)。去供應(yīng)商的開放平臺找到對應(yīng)的接口,查看接口返回參數(shù)是否有你想要的信息,注意一些用戶個人信息參數(shù)都是加密的,還需要通過解密接口獲取。
最后,如果在接口滿足你訴求的之后,再去看開放平臺需要獲取這些接口的要求是什么,以及接口開放的權(quán)限范圍,看下自己是否滿足這些要求。如果不去看的話,可能會白白浪費(fèi)很多調(diào)研時間。
寫接口文檔,接口文檔的查看對象一般是研發(fā)和測試人員,所以大致內(nèi)容就包括接口的使用場景、接口請求方式、錯誤碼、接口說明等幾個部分。其中接口說明分為請求參數(shù)和返回參數(shù),請求參數(shù)包含:英文字段、字段類型、示例值、是否必填、字段說明。返回參數(shù)包含:英文字段、字段類型、示例值、字段說明。如下圖:
八、總結(jié)與展望
API接口是數(shù)字化時代的重要基礎(chǔ)設(shè)施之一,它為不同應(yīng)用程序之間的集成和交互提供了強(qiáng)大的支持和便利。未來隨著人工智能、物聯(lián)網(wǎng)等新技術(shù)的發(fā)展和應(yīng)用,API接口的作用將會越來越重要。同時,為了更好地滿足用戶需求和應(yīng)對安全威脅,API接口的設(shè)計和使用也將面臨更多的挑戰(zhàn)和機(jī)遇。因此,我們需要不斷地學(xué)習(xí)和探索新的技術(shù)和方法,以推動API接口的發(fā)展和應(yīng)用。
本文由 @Glee 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理,未經(jīng)許可,禁止轉(zhuǎn)載
題圖來自 Unsplash,基于 CC0 協(xié)議
該文觀點(diǎn)僅代表作者本人,人人都是產(chǎn)品經(jīng)理平臺僅提供信息存儲空間服務(wù)。
- 目前還沒評論,等你發(fā)揮!