前后端同時開發(fā)怎么定義接口?:前后端同時開發(fā)怎么定義接口?一般有兩種方式,1、為每個邏輯都定義單獨接口(適用于對外接口,?趯S貌怀鲥e)2、定義一個通:-
前后端同時開發(fā)怎么定義接口?
一般有兩種方式,
1、為每個邏輯都定義單獨接口(適用于對外接口,?趯S貌怀鲥e)
2、定義一個通用接口,通過參數(shù)中的id區(qū)分業(yè)務邏輯函數(shù)(適用于公司內(nèi)部項目,一口多用方便靈活)
我的做法是先畫一個前端和后端交互的時序圖,把前后端之間的通訊邏輯理清楚,然后根據(jù)具體每一步的執(zhí)行順序邏輯去定義接口,
如下圖是用戶登錄系統(tǒng)的時序圖,
圖中,app和后臺之間有兩個箭頭,由此我們可以知道,前端app和后端服務器之間兩個接口:
1、發(fā)送請求
2、返回登錄結(jié)果
登錄系統(tǒng)是最長用的也是最基礎(chǔ)的系統(tǒng),雖然簡單卻也涵蓋了前端和后端交互的基本原理,另外圖中還標明了,客戶端的頁面驗證邏輯,和服務端的數(shù)據(jù)庫請求邏輯。
下圖是一張支付接口的時序圖
支付邏輯相對復雜一些,但有圖的幫助,接口會變得很清晰。
前后端數(shù)據(jù)交互頻繁,可以定義一個數(shù)據(jù)接口,然后通過數(shù)據(jù)中的id來區(qū)分要執(zhí)行的函數(shù)。這樣的好處是,接口一個就夠,靈活性高。同一個項目適用這種方式。不適合做對外的接口。
在開發(fā)之前一定要先定義好接口規(guī)范,至于接口應該由前端來定還是后端來定,這個還得看公司的具體情況,但一定要讓前后端都確認無誤,特別是接口協(xié)商要點,以免出現(xiàn)前后端分離之后最容易出現(xiàn)的扯皮現(xiàn)象。
由前端和后端一起協(xié)定接口規(guī)范的內(nèi)容,確定每一個接口的地址(URL), 輸入?yún)?shù)和返回值,必要的時候詳細注釋每一個字段的含義和數(shù)據(jù)類型。
定義接口可以參照以下三方面:
1、資源接口:系統(tǒng)涉及到哪些資源,按照 RESTful 方式定義的細粒度接口。
2、操作接口:頁面涉及到哪些操作,例如修改用戶信息等等,也可以使用 RESTful 方式來定義。
3、頁面接口:頁面涉及到太多接口,如果是一個個地調(diào)用,會需要很多次請求,有可以影響到前
端的性能和用戶體驗, 因此可能需要將這些接口的數(shù)據(jù)合并到一起,作成一個聚合型接口提供
給前端來使用。
接口需要前后端一起確認的信息如下:
1、接口必須返回統(tǒng)一的數(shù)據(jù)結(jié)構(gòu)。
2、接口查詢不到數(shù)據(jù)時,即空數(shù)據(jù)的情況下返回給前端怎樣的數(shù)據(jù)。建議返回非 null 的對應數(shù)據(jù)類型初始值,例如對象類型的返回空對象({}),數(shù)組類型的返回空數(shù)組([]),其他原始數(shù)據(jù)類型也使用對應的默認值。這樣可以減少前端很多瑣碎的非空判斷,直接使用接口中的數(shù)據(jù)。
3、調(diào)用接口業(yè)務失敗的常用錯誤碼,例如未授權(quán)時調(diào)用需要授權(quán)的接口返回 \"status\": “fail”。
4、接口需要登錄時如何處理,特別是同時涉及到 Web 端/微信端/App 端,需要前端針對運行環(huán)境判斷如何跳轉(zhuǎn)到登錄頁面。
5、返回數(shù)據(jù)中圖片 URL 是完整的還是部分的。
a.http://image.com/image/a/img.png 這就是完整的,前端直接使用這個 URL。
b./image/a/img.png 這就是部分的, 一般省略域名部分, 前端需要自己拼接后才能使用
'https://image.com' + '/image/a/img.png'。
6、返回數(shù)據(jù)中頁面跳轉(zhuǎn)的 URL 是給完整的還是部分的。
a.內(nèi)部頁面返回部分的,或者只給ID,由前端自己拼接,例如只給出商品ID,讓前端自己拼接商品
詳情頁的 URL。
b.外部頁面返回完整的,例如廣告位要跳轉(zhuǎn)去谷歌。
7、返回數(shù)據(jù)中日期的格式,是使用時間戳還是格式化好的文字。
a.對于需要前端再次處理的日期值(例如根據(jù)日期計算倒計時),可以使用時間戳。
b.對于純展示用的日期值,推薦返回為格式化好的文字。
8、對于大數(shù)字(例如 Java 的 long 類型),返回給前端時需要設(shè)置為字符串類型,否則 JavaScript 會發(fā)生溢出, 造成得到的數(shù)值錯誤
9、分頁參數(shù)和分頁信息
a.如何限制只返回 N 條數(shù)據(jù)(limit 參數(shù))
b.如何控制每頁的數(shù)據(jù)條數(shù)(pageSize 參數(shù))
c.如何加載某一頁的數(shù)據(jù)(page 參數(shù))
d.如何避免無限滾動加載可能出現(xiàn)的重復數(shù)據(jù)
e.分頁信息包含什么(total、page、pageSize)
當然以上只是列舉了部分項,實際操作中應該盡量全面的在接口協(xié)議中些清楚。因為一旦開發(fā)中有分歧的,都要以接口協(xié)議定義的為準。
根據(jù)需求定義 再商量著來吧
這個得看你們公司的實際情況,一般是分前端主導還是后臺主導。首先不管是前端主導還是后臺主導,需要先定義好返回的通用對象格式,比如統(tǒng)一返回格式
{
code:200,
message:\"ok\
使用文檔定義,開發(fā)遵從文檔,文檔先行,前后端先對接好需求,只關(guān)心對方的接口,內(nèi)部怎么實現(xiàn)的對自己來說是透明的。
mock簡單快速
一天中什么時候運動減肥效果好抓 小孩能不能練啞鈴多大的孩子適合 小孩嘴唇起皮怎么辦怎樣才能預防 孩子的羅圈腿是怎么形成的三大因 孩子早戀怎么辦如何有效疏導孩子 醫(yī)生婆婆稱自己專業(yè)孩子的事必須 兒子成人禮送什么禮物好呢給你孩 有孩子的夫妻千萬不要離婚對于孩 小孩千萬別讓老人帶的說法正確嗎 自卑缺乏安全感的孩子怎么改善 怎么讓孩子開口說話 這幾個方法 怎么讓孩子吃飯 教你如何讓孩子 怎么管教不聽話的孩子 家長首先 頑皮的孩子怎么管教的 這些方法 叛逆期的孩子怎么管教 引導孩子 孩子性格軟弱怎么辦 懦弱的性格 孩子性格偏激怎么辦 孩子性格偏 孩子性格固執(zhí)怎么辦 家長們不妨 愛惹事的孩子怎么管教 不妨試試 養(yǎng)育優(yōu)秀的孩子具備特征,家長要 高考數(shù)學難出新天際,可有的孩子 “做胎教”和“不做胎教”的孩子 花費十幾萬只考了302分 媽媽覺得 甘肅作弊考生留下來的疑團,是怎 一舉奪魁!高三學生離校時,校領(lǐng) 高考釘子戶:26次參加高考,今年 D2809次列車因泥石流脫線!此類 “女兒16歲,學校宿舍里分娩了” 扭曲邪門的內(nèi)容,頻頻出現(xiàn)在教科 川渝地區(qū)幾所大學實力很牛!四川