前端吐槽的後端接口那些事

今天與另外一位前端開發人員扯起了後端接口的皮(我也是前端人員),那個兄弟對後端人員提供的接口很大的意見(我是司空見慣),不過他說的也確實有道理,因此結合個人看法,但願提供接口的人員能多加註意。html

1.沒有文檔...前端

例如新的前端人員到了一個新的公司,使用接口時,問這個這個不知道,問那個那個不知道,要文檔沒文檔,這絕對是前端人員最抓狂的事,內心確定是一千隻草泥馬奔騰而過。後端

爲何要文檔?數據結構

1. 文檔是當前開發者甚至後面的接盤俠(後面開發者)可以清晰往下作的指引。框架

2. 即使是簡單的東西,但若是不寫文檔,之後口口相傳消耗的工做量會比寫文檔更多。單元測試

3. 好記性不如爛筆頭,一段時候後,可能連開發者都忘記接口的用途。測試

文檔怎麼寫?spa

1. 在線文檔。code

在線文檔易於更新和他人查看,例如可使用Swagger編寫接口文檔。htm

PS:Swagger是一個規範和完整的框架,用於生成、描述、調用和可視化RESTful風格的Web服務。

2. 本地文檔。

本地文檔通常用Word文檔,可是比較不易傳播,但能離線查看。

Final~

文檔是及其關鍵的,不管是在線文檔仍是本地文檔,有是關鍵。雖然寫文檔是麻煩的事,但對後端人員來講,是利人利己。

2.文檔不全...

額,就是有了文檔,文檔裏面對接口的描述也可能不全,可能缺每一個參數詳盡描述(取值範圍、類型)、請求方式(GET、POST、PUT、DELETE)、返回數據的全部狀態等等。這裏面可能最缺就是返回數據的狀態!

通常的返回數據結構~

公司的數據接口返回結構是

{
     s : 0/ 1,     //表示此操做的處理狀態( status ),通常簡單的成功 /不成功,使用 1/0 表示。
     m : 'xxxx',  //表示此操做的提示信息( message ),通常只用來顯示操做失敗時提示信息。
     r : [],  //表示此操做的返回值( result )
     count : x  //返回的數據條數
}

這種數據結構看起來沒問題,確實也沒大問題,問題就是出在s這個字段。有許多的接口不只僅只有兩種狀態,成功狀態只有一種卻是沒問題,問題就出在失敗狀態,失敗可能有不少狀況,一個簡單的s:0不能說明失敗的緣由(即使是有m提示信息,但用這個來區分很不靠譜,由於提示可能會變化),咱們不老是僅拿m作顯示用。

升級返回數據結構~

那位同事建議如下方式應答

{
     s : 0/ 1/ 2/ 3,     // 0表明正常,1是參數有誤,2是用戶不存在,3是用戶沒權限等等
     m : 'xxxx',  //表示此操做的提示信息( message ),通常只用來顯示操做失敗時提示信息。
     r : [],  //表示此操做的返回值( result )
     count : x  //返回的數據條數
}

m、r、count 能夠保持不變,可是s裏面必須包含全部返回狀態,表明這個接口全部業務的狀況,前端開發人員也就能針對每種狀況進行處理。

Final~

文檔最重要的部分是返回值的狀態,我也建議上面的升級返回數據結構,這樣就不存在任何不明朗狀況。既然寫了文檔,就把文檔寫好,寫明朗,這也是利人利己地方。

3.接口參數沒校驗...

這個前端人員倒不是很關注,由於自己調接口以前都會先作校驗,後端作參數校驗只是雙重保證。我以前也作過一段時間後端,也犯過沒校驗參數的錯,額,由於後來沒有作後端,也就沒有去修正。不過仍是提醒後端人員,作好參數校驗是第一步,不要偷懶了。

Final~

統一處理好接口校驗,後端好好考慮下。

4.沒保證接口原子性...

接口的原子性很重要,有時一個接口可能會幹幾件事,但不必定都能正常完成,這就致使可能存在原子性問題,接口不能準確被調用。

PS:原子性。一個原子事務要麼完整執行,要麼乾脆不執行。這意味着,工做單元中的每項任務都必須正確執行。若是有任一任務執行失敗,則整個工做單元或事務就會被終止。即此前對數據所做的任何修改都將被撤銷。若是全部任務都被成功執行,事務就會被提交,即對數據所做的修改將會是永久性的。

Final~

原子性必定要保證,保證,保證!

5.接口問題不斷...

前端開發人員調接口時候,可能會存在各自各樣的問題,有問題能夠理解,程序哪會沒有bug,但不能太離譜啊,後端兄弟們。因此我以爲在給出接口以前本身明確幾件事:

1. 是否校驗參數。

2. 是否全部的狀況都測試過了,若是能夠請寫單元測試。

3. 是否返回數據準確明朗,響應狀態碼是否正常。

4. 文檔是否已經完備。

 

總結

後端人員多體諒前端人員,在出現問題時,先檢查自身,別一上來就跟前端幹起來,要是本身的問題就尷尬了。


本文爲原創文章,轉載請保留原出處,方便溯源,若有錯誤地方,謝謝指正。

本文地址 :http://www.cnblogs.com/lovesong/p/5533149.html

相關文章
相關標籤/搜索