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