接口,原來就是個插座

7 評論 11778 瀏覽 141 收藏 9 分鐘

借助生活中熟悉的事物來理解接口,從插座到接口,你對接口的理解是不是更形象生動了?

產(chǎn)品經(jīng)理在日常的工作中,會經(jīng)常與技術(shù)溝通。

例如,在需求評審會上,開發(fā)說,你這個需求太復(fù)雜,光接口就十幾個;又比如技術(shù)說聯(lián)調(diào)接口,接口的響應(yīng)時間等——這些都關(guān)于接口,如果產(chǎn)品經(jīng)理不懂接口,顯然就不能跟技術(shù)愉快地溝通了。

這篇文章就來講解“接口”這個玩意兒。

一、生活中的“接口”

先來看看接口的定義:

API(Application Programming Interface,應(yīng)用程序編程接口)是一些預(yù)先定義的函數(shù),包括接口地址、傳入?yún)?shù)和返回參數(shù),目的是實(shí)現(xiàn)系統(tǒng)之間的相互通信。

嗯,太復(fù)雜,太抽象了。

認(rèn)知心理學(xué)上講,學(xué)習(xí)新事物有個技巧:將陌生的事物與大腦中熟悉的事物相聯(lián)系,這樣便于理解新的事物。

那生活中有沒有類似的概念呢?

在日常生活中,兩個實(shí)物之間進(jìn)行連接的部分成為接口。

沒錯,插座就是一個接口?。?!

手機(jī)的插座、風(fēng)扇的插座、臺燈的插座,都是統(tǒng)一標(biāo)準(zhǔn)的二插,只要找到插座,就可以充電!

所有的電器只要符合接口規(guī)范,便可以通過接口獲得電(相應(yīng)地,所有系統(tǒng)只要符合另一個系統(tǒng)的接口規(guī)范,便可以通過接口獲取數(shù)據(jù))。

舉一個具體的例子:

小明的手機(jī)沒電了,需要充電,怎么辦?

小明需要找到電源插座,然后通過充電器與手機(jī)相連進(jìn)行充電。如下圖所示:

接口,原來就是個插座~

二、技術(shù)說的“接口”

而技術(shù)所說的接口可以理解為:基于需求為了獲得某些數(shù)據(jù),正常狀態(tài)下傳入請求參數(shù),會收到該數(shù)據(jù)范圍內(nèi)的返回參數(shù)。

再來看一個產(chǎn)品中的例子,釘釘開放平臺所提供的獲取員工花名冊字段信息的接口(如下圖所示):

接口,原來就是個插座~

接下來,本文將從接口的四大組成“接口地址、請求方法、請求參數(shù)、返回內(nèi)容和系統(tǒng)”來講解接口。

1. 請求方式:get/post

如果把互聯(lián)網(wǎng)比喻為信息高速公路,那么既然是高速公路,就得有交通規(guī)則對不對?不然你開拖拉機(jī)的、和開大卡車的都在一條路上飆車,很容易堵車是不是?

因此信息高速公路的交通規(guī)則中,就有一條特別規(guī)定了,開拖拉機(jī)的和開卡車分別應(yīng)該走什么車道。

開拖拉機(jī)的運(yùn)載的貨物相對比較少,也很容易看出來運(yùn)載的是什么貨物,因此建議走get車道,雖然路窄一點(diǎn),但好在過關(guān)卡的時候不用下車檢查。

大卡車運(yùn)載的貨物比較多還比較隱蔽,因此走post車道。

圖1是一個get請求,他的參數(shù)是拼接在url(query string)里的。

接口,原來就是個插座~

圖2是一個post請求,它的參數(shù)是在request body(請求體)中的,以鍵值對的形式傳遞參數(shù)。

接口,原來就是個插座~

2. 請求地址

顧名思義就是接口的地址,以網(wǎng)址的形式展現(xiàn),你通過發(fā)送請求給這個網(wǎng)址來對接口進(jìn)行交互操作。

3. 參數(shù)說明

即傳輸參數(shù)的時候要帶的一些參數(shù),一般文檔中會用表格的形式清晰的說明。

當(dāng)我向接口發(fā)送攜帶請求參數(shù)的請求時,都要攜帶什么字段,規(guī)則是什么。如下圖:

接口,原來就是個插座~

4. 返回內(nèi)容

返回內(nèi)容一般會以json或是XML的形式返回。

XML和JSON是兩種完全不同的數(shù)據(jù)表達(dá)方式,他們分別采用完全不同的格式將原始數(shù)據(jù)轉(zhuǎn)換成XML或者JOSN格式數(shù)據(jù),再借用貨車與高速公路的例子,XML或JSON是車裝載的貨物。

接口,原來就是個插座~

像上面貼出來的這種接口,還是比較好閱讀的。

如果我們發(fā)送userid_list和field_filter_list,就是員工userid列表和花名冊字段列表,接口就返回給我們errcode返回碼以及errmsg返回碼的文本描述,提示我們是否返回成功。

假若成功,便會返回如下的花名冊字段信息:

接口,原來就是個插座~

三、接口的性能

1. 接口響應(yīng)時間

從請求端發(fā)送一個請求開始,到接收到響應(yīng)結(jié)果所經(jīng)歷的時間。

2. 并發(fā)數(shù)

指同時訪問服務(wù)器站點(diǎn)的連接數(shù)。

可以進(jìn)行簡單估算,如果響應(yīng)時間<200ms,1s=1000ms,1000/200=5,那么1個線程,秒并發(fā)>5,如果有20個線程,那秒并發(fā)可以超過100。

響應(yīng)時間越短,多線程并發(fā)數(shù)越高,接口性能越好。不是所有的業(yè)務(wù)場景都需要“最好”的性能,滿足業(yè)務(wù)場景即可。

3. 進(jìn)程和線程

一個程序有多個進(jìn)程,一個進(jìn)程有多個線程。

對于操作系統(tǒng)來說,一個任務(wù)就是一個進(jìn)程。比如,打開一個瀏覽器就是啟動一個瀏覽器進(jìn)程,打開一個記事本就啟動了一個記事本進(jìn)程,打開兩個記事本就啟動了兩個記事本進(jìn)程,打開一個Word就啟動了一個Word進(jìn)程。

有些進(jìn)程還不止同時干一件事,比如Word,它可以同時進(jìn)行打字、拼寫檢查、打印等事情。

在一個進(jìn)程內(nèi)部,要同時干多件事,就需要同時運(yùn)行多個“子任務(wù)”,我們把進(jìn)程內(nèi)的這些“子任務(wù)”稱為線程。

四、小結(jié)

可以發(fā)現(xiàn),理解好接口,可以幫助產(chǎn)品經(jīng)理:

  • 更加理解各個系統(tǒng)之間的數(shù)據(jù)是如何流轉(zhuǎn)的,在需求設(shè)計(jì)階段考慮會更加全面、嚴(yán)謹(jǐn)。
  • 雖然不懂如何實(shí)現(xiàn),但能大概估摸出開發(fā)總體工作量,在安排項(xiàng)目計(jì)劃時會考慮到接口的難易程度。

最后用一句話總結(jié)一下:

數(shù)據(jù)與用戶行為相聯(lián)系,接口實(shí)現(xiàn)系統(tǒng)之間的數(shù)據(jù)交互,從功能的角度講,便是功能決定接口,接口反作用于功能。

 

本文由 @澤 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉(zhuǎn)載

題圖來自Unsplash,基于CC0協(xié)議

更多精彩內(nèi)容,請關(guān)注人人都是產(chǎn)品經(jīng)理微信公眾號或下載App
評論
評論請登錄
  1. 通俗易懂!你是個優(yōu)秀的產(chǎn)品經(jīng)理

    回復(fù)
    1. 謝謝~

      回復(fù)
  2. 前輩。電力系統(tǒng)圖中的,插座接口和手機(jī)之間的箭頭是筆誤了嗎?我理解了好一會兒

    來自北京 回復(fù)
    1. 是的……

      回復(fù)
    2. 啊啊啊啊,我就說感覺就是不對哈哈哈

      來自上海 回復(fù)
  3. 很形象很容易理解?。。?!辛苦

    來自江西 回復(fù)
    1. 哈哈 謝謝~

      回復(fù)