一文搞懂API接口那些事兒
在產(chǎn)品設(shè)計(jì)和開(kāi)發(fā)中,靈活使用現(xiàn)有的API接口能更好完成當(dāng)前設(shè)計(jì)。這篇文章,我們就通過(guò)案例來(lái)了解下API接口的相關(guān)知識(shí)。
一、接口:數(shù)字世界的握手
想象一下,你走進(jìn)一家咖啡館,你對(duì)咖啡師說(shuō):“我要一杯拿鐵?!笨Х葞熃邮盏侥愕闹噶睿盟膶I(yè)技能制作出一杯香濃的拿鐵給你。在這個(gè)過(guò)程里,你不需要知道咖啡機(jī)怎么使用,也不需要了解咖啡豆的烘焙工藝,更不需要知道咖啡怎么做。
你和咖啡師之間的交流,就像你和咖啡師之間有個(gè)“接口”——它定義了你如何請(qǐng)求服務(wù),以及服務(wù)如何響應(yīng)你。
在軟件的世界里,接口就像是一個(gè)規(guī)則手冊(cè),告訴不同的程序或者服務(wù),“嘿,如果你想和我聊天,這是你能對(duì)我說(shuō)的話,以及我可能會(huì)怎么回答你。”
這些規(guī)則讓軟件組件能夠相互溝通,而不需要了解對(duì)方內(nèi)部的復(fù)雜細(xì)節(jié)。
再具體一點(diǎn),假設(shè)程序員A開(kāi)發(fā)了軟件A,程序員B正在研發(fā)軟件B。
有一天,程序員B想要調(diào)用軟件A的部分功能,但是他又不想從頭看一遍軟件A的代碼,怎么辦呢?
程序員A想了一個(gè)好主意:我把軟件A里你需要的功能打包好,寫(xiě)成函數(shù);你把這個(gè)函數(shù)放在軟件B里,就能直接用我的功能啦~
其中,API 就是程序員A說(shuō)的那個(gè)函數(shù)。
二、接口的組成:軟件的對(duì)話指南
知道接口的作用,程序員之間如何看懂并調(diào)用對(duì)方的接口的呢,我們將接口的組成簡(jiǎn)化為五個(gè)關(guān)鍵部分:請(qǐng)求方法、接口地址、請(qǐng)求參數(shù)、返回參數(shù)、返回結(jié)果示例。
想象一下,還是剛才點(diǎn)咖啡的場(chǎng)景。
1. 請(qǐng)求方法 (Request Method)
相當(dāng)于你選擇的點(diǎn)咖啡方式。接口中有Get 和Post 兩種方式。
Get就像你你在咖啡館門(mén)口,手里拿著一張咖啡館的菜單,你知道菜單上咖啡的價(jià)格、種類(只是獲取信息)。GET請(qǐng)求,是在請(qǐng)求服務(wù)器提供一些特定的信息,而不會(huì)改變服務(wù)器上的任何數(shù)據(jù)。在技術(shù)上,GET請(qǐng)求通常用于檢索數(shù)據(jù),且可以被緩存。
而Post是你直接走進(jìn)咖啡館,看到菜單之后,跟服務(wù)員點(diǎn)單“我要一杯大杯的熱拿鐵,少糖”(不僅僅是在獲取信息,而是在發(fā)起一個(gè)動(dòng)作,即下訂單)。服務(wù)員會(huì)記錄訂單、信息、排號(hào)。這相當(dāng)于POST請(qǐng)求,它用于向服務(wù)器發(fā)送數(shù)據(jù),可能會(huì)創(chuàng)建一個(gè)新的資源或更新現(xiàn)有的資源。POST請(qǐng)求通常不被緩存,因?yàn)樗鼈兇砹艘淮涡碌牟僮鳌?/p>
2. 接口地址 (Endpoint)
接口地址就像是咖啡館的位置,它是你與咖啡師交互的具體地點(diǎn)。你必須知道這個(gè)地址,才能去點(diǎn)咖啡、去咖啡。在接口中,這就是服務(wù)器上的具體資源位置,比如https://api.example.com/users。
3. 請(qǐng)求參數(shù) (Request Parameters)
當(dāng)站在咖啡館的柜臺(tái)前,可能會(huì)說(shuō):“我要一杯大杯的熱拿鐵,少糖?!?/p>
這里的“大杯”、“熱”和“少糖”就是請(qǐng)求參數(shù),它們告訴咖啡師你具體想要什么樣的咖啡。
在API中,請(qǐng)求參數(shù)是你傳遞給服務(wù)器的具體信息,比如用戶ID、產(chǎn)品類型等,以便服務(wù)器能準(zhǔn)確地響應(yīng)你的需求。
4. 返回參數(shù) (Response Parameters)
當(dāng)咖啡師聽(tīng)到你的要求后,他會(huì)開(kāi)始制作咖啡,并在完成后告訴你:“您的大杯熱拿鐵,少糖,一共9.9元?!?/p>
這里,“大杯熱拿鐵”、“少糖”和“9.9元”就是返回參數(shù),它們是咖啡師基于你的請(qǐng)求給出的反饋。
在API中,返回參數(shù)是服務(wù)器根據(jù)你的請(qǐng)求生成的信息,比如訂單狀態(tài)、結(jié)果代碼、200、404等。
5. 返回結(jié)果示例 (Response Example)
如果把整個(gè)過(guò)程完整地描述出來(lái),就相當(dāng)于API的返回結(jié)果示例。
例如,當(dāng)你在咖啡館下單后,你可能會(huì)收到一個(gè)收據(jù),上面寫(xiě)著:“訂單號(hào)#123456,一杯大杯熱拿鐵(少糖),總價(jià)9.9,預(yù)計(jì)10分鐘后完成?!?/p>
這個(gè)收據(jù)就是一個(gè)返回結(jié)果示例,在API中,這通常是一個(gè)JSON或XML格式的數(shù)據(jù)包,詳細(xì)說(shuō)明了你的請(qǐng)求是如何被處理的,以及結(jié)果是什么。
三、接口文檔示例
【API示例】獲取明天北京的天氣預(yù)報(bào)。
【請(qǐng)求方法】GET
【接口地址】https://api.weatherprovider.com/v1/forecast
【請(qǐng)求參數(shù)】
【返回參數(shù)】
【返回結(jié)果示例】
懂接口對(duì)產(chǎn)品經(jīng)理來(lái)說(shuō)有什么用呢?
(1)前后端的協(xié)作,通過(guò)接口實(shí)現(xiàn),后端寫(xiě)接口,前端去調(diào)用,這個(gè)過(guò)程出現(xiàn)問(wèn)題,比如頁(yè)面沒(méi)有數(shù)據(jù),點(diǎn)擊功能按鈕為什么沒(méi)有反應(yīng)?等等這些問(wèn)題,降低溝通成本,更理解,也更兼容。
(2)當(dāng)你手里有一份接口文檔,能理解每個(gè)接口解決了什么問(wèn)題;在產(chǎn)品設(shè)計(jì)的時(shí)候,請(qǐng)求參數(shù)的清晰定義,響應(yīng)參數(shù)返回的字段正確顯示;也是產(chǎn)品設(shè)計(jì)中需要考慮的一部分。
(3)第三方API對(duì)接時(shí),通過(guò)返回參數(shù)獲取關(guān)鍵指標(biāo),數(shù)據(jù)是系統(tǒng)的基礎(chǔ),比如像G端業(yè)務(wù)會(huì)涉及到跟其他系統(tǒng)的對(duì)接,對(duì)接給到的接口文檔能看懂,提取關(guān)鍵信息,也許其中的某些字段就成為需求的一部分。
希望這個(gè)關(guān)于接口的解釋,能對(duì)你有用呀,手里有糧,心中不慌。
歡迎評(píng)論區(qū)一起交流,一起成長(zhǎng)。
本文由 @思睿 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)作者許可,禁止轉(zhuǎn)載。
題圖來(lái)自Unsplash,基于CC0協(xié)議。
該文觀點(diǎn)僅代表作者本人,人人都是產(chǎn)品經(jīng)理平臺(tái)僅提供信息存儲(chǔ)空間服務(wù)。
- 目前還沒(méi)評(píng)論,等你發(fā)揮!