產(chǎn)品經(jīng)理,你要懂點(diǎn)API接口知識(shí)!
產(chǎn)品經(jīng)理不需要深入地去了解各個(gè)接口的實(shí)現(xiàn)原理,畢竟術(shù)業(yè)有專攻,但是了解什么場(chǎng)景應(yīng)該使用什么樣的接口還是很有必要的,可以方便更好地對(duì)外提供數(shù)據(jù)服務(wù)。
剛成為產(chǎn)品經(jīng)理的時(shí)候常常聽到開發(fā)吐槽:“這產(chǎn)品經(jīng)理啥都不懂,這個(gè)需求那么多接口,開發(fā)都?jí)騿苓€要聯(lián)調(diào),居然就排這么點(diǎn)開發(fā)時(shí)間,出了什么問題我可不負(fù)責(zé)!”
每次聽到這樣的吐槽總會(huì)一臉懵逼——什么接口?什么聯(lián)調(diào)?我又做錯(cuò)了什么?
后來(lái)自己做過開發(fā)之后,開始了解到:在系統(tǒng)層面上,除了看得到的頁(yè)面功能,還有很多隱藏在頁(yè)面功能之下的接口。
這篇文章就簡(jiǎn)單總結(jié)一下:我眼中的接口是什么樣的?以及,為何要學(xué)習(xí)API接口知識(shí)?
什么是接口?
API接口:應(yīng)用程序接口(API:Application Program Interface),是一組定義、程序及協(xié)議的集合,通過 API 接口實(shí)現(xiàn)計(jì)算機(jī)軟件之間的相互通信。
打個(gè)比方,如果我開了一家銀行,開放了存/取款的服務(wù)。普通儲(chǔ)戶通過手上的支票想取走存款,必須先找到對(duì)應(yīng)的【位置】,也就是正確的銀行、正確的柜臺(tái)。
按照銀行規(guī)定的【支票格式】填寫好,那么就可以憑這個(gè)“支票”里拿走錢。
另外,柜臺(tái)是有限的、來(lái)取錢的客戶可能會(huì)很多,因此也就需要客戶【取號(hào)排隊(duì)】,一個(gè)接著一個(gè)有序的進(jìn)行取款服務(wù)。為了安全和服務(wù)質(zhì)量的考慮,銀行柜臺(tái)需要有【反饋機(jī)制】,如果客戶支票填寫有誤、或者支票過期了,需要告訴客戶回去重新填寫。
【位置】:系統(tǒng)對(duì)外發(fā)布的API地址,包含了IP、端口、API名稱等信息。
【支票格式】:這個(gè)接口的數(shù)據(jù)傳輸規(guī)范,比如:SKU只支持9位長(zhǎng)度的字符串?dāng)?shù)據(jù),庫(kù)存只支持16位長(zhǎng)度的數(shù)字,如果傳參格式不對(duì),那么就會(huì)啟動(dòng)【反饋機(jī)制】。
【取號(hào)排隊(duì)】:接口的“消息隊(duì)列”,消息隊(duì)列的主要特點(diǎn)是異步處理,可以減少請(qǐng)求響應(yīng)的時(shí)間和解耦。想象一下,如果取錢的人不【取號(hào)排隊(duì)】而是一哄而上涌上柜臺(tái),柜臺(tái)還能提供正常的服務(wù)嗎?
【反饋機(jī)制】:接口中的返回參數(shù),為了保證對(duì)方能夠正常獲取所有的數(shù)據(jù),不至于因?yàn)閿?shù)據(jù)異常之類的原因?qū)е聰?shù)據(jù)丟失,在發(fā)現(xiàn)異常的時(shí)候,需要告知對(duì)方發(fā)生了什么異常,為什么無(wú)法獲取到這個(gè)數(shù)據(jù),對(duì)方就會(huì)根據(jù)這個(gè)反饋?zhàn)龀鱿鄳?yīng)的調(diào)整,或者重新發(fā)起請(qǐng)求、或者放棄這種數(shù)據(jù)。
注:開發(fā)人員口中的“聯(lián)調(diào)”,簡(jiǎn)而言之就是兩個(gè)系統(tǒng)的開發(fā)人員之間對(duì)這個(gè)接口調(diào)用成功與否、數(shù)據(jù)能否正常獲取等場(chǎng)景進(jìn)行測(cè)試。由于接口聯(lián)調(diào)涉及到跨系統(tǒng)的開發(fā)人員之間配合,所以一般需要在正常的開發(fā)時(shí)間之外預(yù)留出一段時(shí)間給到開發(fā)人員進(jìn)行聯(lián)調(diào)。
接口的類型有多少種?
上面只是用一個(gè)比較通俗的例子對(duì)接口的原理進(jìn)行說明,實(shí)際上接口的類型有很多,下面會(huì)根據(jù)不同的接口類型講講各種類型接口之間的區(qū)別:
1. 根據(jù)響應(yīng)的機(jī)制可以分為同步、異步接口:
同步接口:A系統(tǒng)請(qǐng)求B系統(tǒng)接口之后,必須獲得B系統(tǒng)接口的響應(yīng)后才會(huì)執(zhí)行下一步操作。
例如:登錄操作的時(shí)候調(diào)用第三方平臺(tái)接口(如微信)進(jìn)行登錄,需要跳轉(zhuǎn)到微信進(jìn)行驗(yàn)證并返回驗(yàn)證結(jié)果后,才能登錄成功。
異步接口:A系統(tǒng)請(qǐng)求B系統(tǒng)接口之后,不需要等待源系統(tǒng)返回結(jié)果就可以進(jìn)行下一步操作。
例如:在滴滴打車之后,司機(jī)點(diǎn)擊結(jié)束行程后,不需要等待銀行付款成功之后再開始下一個(gè)訂單。因?yàn)榇藭r(shí)滴滴已經(jīng)驗(yàn)證過司機(jī)、乘客的銀行賬戶或者支付寶賬戶,確認(rèn)了雙方交易的合法性就可以結(jié)束訂單。
這時(shí),我們看到的是我們已經(jīng)付款成功(其實(shí)銀行可能還沒扣款),而滴滴后臺(tái)會(huì)將這筆交易流水傳給銀行,在銀行驗(yàn)證后再進(jìn)行扣款、付款操作。
2. 根據(jù)接口的觸發(fā)形式可以分為分發(fā)、訂閱接口
分發(fā)接口:A系統(tǒng)產(chǎn)生新數(shù)據(jù)的時(shí)候就分發(fā)給B系統(tǒng)(也可以是多個(gè))。
例如:電商網(wǎng)站后臺(tái)的客戶管理系統(tǒng),在產(chǎn)生了一個(gè)新的黑名單客戶的時(shí)候,就會(huì)將數(shù)據(jù)分發(fā)到訂單、推薦等等各個(gè)系統(tǒng),以便及時(shí)攔截這部分客戶的訂單。
訂閱接口:B系統(tǒng)在需要的時(shí)候調(diào)用A系統(tǒng)的接口進(jìn)行數(shù)據(jù)訂閱。
例如:用戶在股票交易軟件中查詢銀行賬戶余額的時(shí)候才會(huì)調(diào)用銀行的余額查詢接口,而股票交易軟件自身不存儲(chǔ)這個(gè)數(shù)據(jù)。
產(chǎn)品經(jīng)理了解接口有什么用?
以上不同類型的接口分別有不同的使用場(chǎng)景,個(gè)人認(rèn)為產(chǎn)品經(jīng)理不需要理解各種接口的實(shí)現(xiàn)原理,但是要了解什么場(chǎng)景應(yīng)該使用什么樣的接口,以便更好地對(duì)外提供數(shù)據(jù)服務(wù)。
個(gè)人看來(lái),了解接口有以下幾個(gè)好處:
- 明確各個(gè)系統(tǒng)之間的數(shù)據(jù)流轉(zhuǎn),特別是功能系統(tǒng)的產(chǎn)品經(jīng)理,只有在知道了功能設(shè)計(jì)的目的、需要對(duì)外提供什么樣的接口服務(wù),需求設(shè)計(jì)階段才能夠考慮得更加全面;
- 掌握開發(fā)總體工作量,而不局限于功能;另外,在安排項(xiàng)目計(jì)劃時(shí)能夠考慮到與周邊系統(tǒng)聯(lián)調(diào)的時(shí)間,計(jì)劃安排才會(huì)更加合理;
- 識(shí)別項(xiàng)目中的關(guān)鍵風(fēng)險(xiǎn)點(diǎn),特別是一些關(guān)鍵接口、數(shù)據(jù)量大需要進(jìn)行大數(shù)據(jù)壓測(cè)的接口,需要盡早安排聯(lián)調(diào)和測(cè)試,并且對(duì)周邊配合的項(xiàng)目提出要求。
產(chǎn)品經(jīng)理如何寫接口文檔?
在度娘就可以找到不少現(xiàn)成的接口文檔,可以參考騰訊開放平臺(tái)上的API列表,這里簡(jiǎn)單總結(jié)幾個(gè)要點(diǎn):
- 聲明接口字段和返回參數(shù),字段需要聲明是否必填、字段類型、長(zhǎng)度以及處理規(guī)則;
- 聲明接口預(yù)估的數(shù)據(jù)量大小、調(diào)用頻率等,以保證開發(fā)時(shí)考慮到接口的健壯性;
- 聲明接口的異常處理方式,如失敗的數(shù)據(jù)是否重發(fā)、重發(fā)次數(shù)等等。
在之前的產(chǎn)品設(shè)計(jì)過程中,還出現(xiàn)過配合系統(tǒng)雙方的產(chǎn)品經(jīng)理為了誰(shuí)應(yīng)該來(lái)寫接口文檔而爭(zhēng)執(zhí)過。后來(lái)定了一套標(biāo)準(zhǔn),個(gè)人認(rèn)為是比較合理的,供大家參考:
原則1:一般是由數(shù)據(jù)的需求方來(lái)編寫接口需求文檔。
原則2:如果該接口是一個(gè)分發(fā)接口,則由數(shù)據(jù)的提供方來(lái)編寫接口需求文檔。
總結(jié):
好了,說到這里,已經(jīng)把我個(gè)人這些年工作中所接觸到的API接口簡(jiǎn)單介紹了一下。由于本人一直是做后端產(chǎn)品經(jīng)理,因此對(duì)于前端的接口涉獵不多,不了解差異有多大,以上內(nèi)容僅供后端產(chǎn)品經(jīng)理參考,也希望大家能夠?qū)ξ闹械囊恍╁e(cuò)誤及時(shí)指正。
另外,作為一名大數(shù)據(jù)的產(chǎn)品經(jīng)理,大數(shù)據(jù)如何利用接口對(duì)外提供服務(wù)?后續(xù)總結(jié)出自己的一套方法論后再分享。
本文由 @LinKiD 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉(zhuǎn)載
題圖來(lái)自Unsplash,基于CC0協(xié)議
寫的很好
寫的很好
感謝!
點(diǎn)贊
非常感謝,入職來(lái)沒專門的帶教做培訓(xùn),整天聽同事和開發(fā)對(duì)接都難理解,百度也不好查,謝謝這么通俗易懂的文章。
感謝感謝!
寫的很好
那么運(yùn)營(yíng)該如何寫接口文檔呢?我們這里沒產(chǎn)品經(jīng)理,只有開發(fā)和運(yùn)營(yíng)。
例子簡(jiǎn)單易懂~
感謝你的分享
感謝分享~
接口文檔讓產(chǎn)品經(jīng)理寫有單難為人了 只有開發(fā)出身的產(chǎn)品經(jīng)理能寫這個(gè) 這也就是為啥大廠只招開發(fā)專業(yè)的同學(xué)做產(chǎn)品經(jīng)理了 非開發(fā)出身的產(chǎn)品經(jīng)理也不用氣餒 只要思路清晰的表達(dá) 大多數(shù)開發(fā)人員還是能接受自己寫接口文檔的
接口文檔也是產(chǎn)品經(jīng)理寫的呀… ? 我們都是開發(fā)自己弄。。。
先贊為敬。其實(shí)建議產(chǎn)品經(jīng)理可以先看看接口文檔,結(jié)合你你想實(shí)現(xiàn)的功能,聯(lián)系到哪個(gè)地方需要那些字段數(shù)據(jù),就能很好的理解接口所代表的含義。其實(shí)就是數(shù)據(jù)傳輸?shù)耐ǖ?,不過該通道有著自傳輸方式,格式,以及接受方式。
不是先設(shè)計(jì)需求文檔,看看需要哪些字段,大概了解各字段的數(shù)據(jù)從哪個(gè)庫(kù)拿,然后原型文檔出來(lái)了,后端才設(shè)計(jì)接口的嗎?一開始哪來(lái)的接口文檔?
參考其他項(xiàng)目或者產(chǎn)品的需求文檔學(xué)習(xí)先,這樣子和開發(fā)溝通起來(lái)會(huì)更好些
參考其他項(xiàng)目或者產(chǎn)品的“技術(shù)文檔”學(xué)習(xí)先,這樣子和開發(fā)溝通起來(lái)會(huì)更好些
很有道理。多看幾個(gè)別人寫的接口文檔之后就能很好地理解接口的應(yīng)用場(chǎng)景和含義。
那就趕緊好好學(xué)習(xí)!
嗨LinKiD,你的文章真是通俗易懂,請(qǐng)問可以轉(zhuǎn)載到Great-PM公眾號(hào)上嗎?一定署名原作者的
可以的
產(chǎn)品經(jīng)理一定要懂技術(shù)嗎
不是??淳唧w的工作,如果是后端系統(tǒng)和數(shù)據(jù)平臺(tái)的產(chǎn)品經(jīng)理都建議懂點(diǎn)技術(shù)。知道如何應(yīng)用各種技術(shù)即可,不需要知道技術(shù)細(xì)節(jié)。
當(dāng)然,不知道技術(shù)也不妨礙做產(chǎn)品經(jīng)理,但有些項(xiàng)目就沒有機(jī)會(huì)參與了。
加微信交流下
柜臺(tái)比喻挺好的,請(qǐng)問Api和SDK有什么區(qū)別呢
個(gè)人理解:如果說API是獲取數(shù)據(jù)的管道,那SDK就是可以實(shí)現(xiàn)某些功能的應(yīng)用包,可以理解為你家安裝的濾水器,提供過濾服務(wù)。你安裝管道是為了獲得特定用途的水,你可以定制管道的大小,水龍頭的規(guī)格。但是濾水器是標(biāo)準(zhǔn)的產(chǎn)品,你只管安裝上用來(lái)濾水。
目前為止我覺得產(chǎn)品經(jīng)理是不需要了解SDK的。
如果涉及做游戲SDK或者接入廣告SDK,還是需要一定的理解吧。個(gè)人拙見
認(rèn)真看完了,。,,然而我還是沒懂啊。。。
看來(lái)用銀行做比喻還是太抽象了,哈哈。以前是大家都喜歡把接口比喻為“管道”,而你的負(fù)責(zé)系統(tǒng)就是一個(gè)自來(lái)水廠。如果哪一戶人家(數(shù)據(jù)的需求方,另一個(gè)系統(tǒng))需要自來(lái)水,開發(fā)就鋪設(shè)一條管道通到這一戶人家,而聯(lián)調(diào)的過程就像是管道鋪設(shè)完了,要開個(gè)水龍頭試一下,水是不是真的過來(lái)了。
不能再形象了。。哈哈哈哈贊??
我一直都不太清楚接口是個(gè)啥,每次問他們就說是調(diào)用什么數(shù)據(jù)~ 哎 笨死了
你有插銷。他們給你個(gè)插座。你就能拿到你想要的電。
還是這樣形容我就清楚了 ??
一開始也有這種感覺…就好像你問他筷子是什么,他就告訴你這是吃飯的家伙,然后你還以為是個(gè)碗 ?
太扎心了哈哈哈,我是個(gè)假的產(chǎn)品
我覺得接口不管怎么比喻,都還是一個(gè)很情色的東西。
你車速太快了老司機(jī)
哈哈
??
接口無(wú)非是干4個(gè)事情,對(duì)數(shù)據(jù)(數(shù)據(jù)庫(kù))增、刪、改、查,接口另一端(后端)就是后端程序員寫好的sql和邏輯判斷,前端調(diào)用接口就是間接的調(diào)用sql操作數(shù)據(jù)庫(kù)。如果有錯(cuò)誤,請(qǐng)指出,謝謝!
和大家討論一波感覺確實(shí)明白了不少~
調(diào)用接口就是獲取目標(biāo)數(shù)據(jù),調(diào)用的接口會(huì)給你返回請(qǐng)求的參數(shù)值
好~謝謝講解噢