產品設計中接口的定義及接口需求文檔的編寫指南
2024-09-21
1. 什么是接口
接口在百科全書中的定義:API(應用程序編程接口)是一組預定義函數,其目的是為應用程序和開發(fā)人員提供訪問基于某種軟件或硬件的一組例程的能力,而不必訪問源代碼或了解內部工作機制的細節(jié)。
要理解什么是接口,首先要明白為什么我們需要使用接口?
兩個獨立的系統(tǒng),擁有獨立的數據或者程序,這就使得它們之間無法直接訪問對方的數據庫或者程序(兩個獨立的數據相當于兩個獨立的家庭,每個家庭都不能隨意讓外人進入,否則將發(fā)生盜竊等嚴重后果)。但是在某些業(yè)務場景下,獨立的系統(tǒng)必須共享數據或者一套共同的程序邏輯,比如不同業(yè)務操作系統(tǒng)在統(tǒng)一的業(yè)務流程上,下游系統(tǒng)的業(yè)務依賴于上游系統(tǒng)的數據。
既然如此,何不把它們設計成一個系統(tǒng),這樣就不會出現上述的問題了呢?
這是因為有些業(yè)務流程非常長且復雜,如果設計成一個系統(tǒng),整個系統(tǒng)就會變得非常復雜,功能設計、開發(fā)和維護都比較困難。所以,雖然有上下游業(yè)務關系但邊界不明確,一般都會把業(yè)務分成獨立的系統(tǒng)去實現網站優(yōu)化,比如采購系統(tǒng)、倉儲系統(tǒng)等。另外,很多時候我們需要獲取的數據是我們之外的其他公司擁有的,更不可能設計成同一個系統(tǒng)。
基于以上兩點:接口是兩個獨立的系統(tǒng)之間同步數據或者互相訪問對方程序的方式。
二、如何設計接口 1、分清楚是主動訪問還是被動請求:
a. 如果是主動訪問,則分兩種情況:
第一,我們是數據的使用者,需要主動從對方獲取數據;第二,我們是數據的提供者,需要主動將數據同步給對方。
主動訪問的時候,不需要自己創(chuàng)建接口,而是訪問對方的接口。需要明確的問題是:在什么節(jié)點我們需要訪問對方的接口?是在用戶觸發(fā)某個操作的時候實時訪問嗎?還是說沒有實時性要求,只是周期性的訪問?
如果我們是數據的使用方,而我們需要的數據對于用戶使用某項功能至關重要,那么我們就必須在用戶操作的時候實時訪問對方的接口,獲取數據并展示給用戶。一個典型的例子就是我們在網站上注冊時獲取驗證碼的功能。
如果我們是數據的使用方,而我們需要的數據是一些和用戶實時操作不相關的基礎數據,比如客服系統(tǒng)需要從其他業(yè)務系統(tǒng)獲取用戶的基礎數據,以便在系統(tǒng)某些功能下展示用戶的信息(比如客服在處理客戶投訴等問題時,需要知道客戶的一些詳細信息,而這些信息只有在業(yè)務系統(tǒng)中才有)。這種情況下,我們通常會增加一個腳本,定期(比如兩小時一次)訪問對方的接口獲取數據并存入自己的數據庫,然后在需要的時候直接從自己的數據庫中獲取并展示出來。
如果我們是數據提供方,并且我們提供的數據是下游系統(tǒng)要求實時性要求高的數據,我們更多的會使用實時同步;如果是基礎數據,我們就會選擇周期性同步。
b.如果是被動請求,則分兩種情況:
第一,我們是數據提供方,需要對方獲取數據;第二,我們是數據使用者,需要對方主動同步數據。
被動請求是需要提供接口給對方訪問的,這時候我們就需要搞清楚:對方來訪問的時候網站開發(fā),我們需要提供什么參數?根據他提供的參數,我們需要返回什么數據?這些數據從哪里來?
如果有些數據來自本系統(tǒng),其他系統(tǒng)需要使用這些數據,那么可以提供一個接口,讓其他系統(tǒng)通過訪問接口來獲取這些數據。
如果我們是數據使用方,要求對方主動同步數據,這種場景很典型例如:我們是業(yè)務的下游,上游系統(tǒng)生成數據之后,需要將數據同步到下游系統(tǒng)才能讓流程繼續(xù)進行,而流程的時效性要求很高,不能有延遲。這種情況下,只有上游系統(tǒng)知道數據是哪個節(jié)點生成的,所以只能等它生成數據后,主動推送給下游系統(tǒng)。下游系統(tǒng)因為無法知道數據生成的時間,所以無法及時獲取數據。這時候最好的辦法就是讓對方主動同步數據。
2.理解數據交互的實時性要求
a.如果我們是數據用戶,我們需要根據業(yè)務需求來決定數據采集的實時性。
上面提到,如果數據是用戶使用功能時需要的,是即時獲取的。如果是定期獲取基礎數據,那么獲取周期就根據我們對數據準確度的要求,以及對方數據變化的頻率來決定。如果我們對數據的準確度要求不是100%,對方數據變化的頻率也不是很高,那么周期可以設計的長一些,比如一天一次,幾個小時一次等等。
b. 如果我們是數據提供方,則以對方業(yè)務需求為準,但對于需要大量訪問才能獲取數據等特殊情況,我們應該在需求或評論中予以說明和說明,以幫助開發(fā)和設計更符合需求的接口。
3.選擇合適的接口方法
考慮到接口類型的不同和實時性的要求,可以選擇合適的接口實現方式:
a.mq消息隊列
它是一個中間件,數據提供方把數據放到中間件里,數據獲取方從中間件獲取數據。為了滿足向多個系統(tǒng)同步基礎數據的需求,消息隊列是最合適的方式。
如果選擇這種同步方式,需要注意以下幾點:增量同步還是全量同步。如果是增量同步網站開發(fā),對方應該增量獲取數據還是全量獲取數據?如果是全量同步,對方在什么情況下更新數據,什么情況下更新數據?
b. 同步
數據同步方直接訪問數據采集方的數據表網站模板,將數據寫入對應表,這種方式實時性最高,如果對數據準確性要求很高的話,這種方式是一種很好的數據同步方式。