
來源:麥叔編程
作者:麥叔
代碼評審會上,氣氛有點緊張!
羅老師正在看張三的代碼,并指出了一個問題:
你這個API,在用戶沒登錄的情況下,應該返回401,不應該返回200。要遵守HTTP協議的規范。
張三對此不以為然的說:
我們約定了都返回200的,具體的錯誤信息放在返回的JSON里。我又沒有違法,不能為了規范而規范吧。
羅老師竟無言以對。他趕快去查看Facebook,谷歌等業界大亨的做法,可是他們的做法也不統一。到底要不要遵守HTTP Status Code呢?
聽我細細道來,本文涵蓋:
你很可能已經熟悉HTTP和Restful API。不管你是否熟悉,讓我們用1分鐘的時間來簡單回顧一下:
HTTP協議定義了瀏覽器和網頁服務器之間的交互過程。它的核心概念就2個:
有了標準的協議就好辦了,任何人都可以開發瀏覽器出來,只要你寫的軟件都能遵守這個協議就行。我記得我研究生時候一門課的大作業就是開發一個簡易的瀏覽器。
控制了瀏覽器,就控制了網絡流量,就不怕沒錢賺了,所以各大廠商都在努力推廣自己的瀏覽器,就有了IE, Edge,Chrome,FireFox,QQ瀏覽器,以及360瀏覽器等。有的瀏覽器又好用又文明,有的瀏覽器很流氓,有的瀏覽器不遵守協議,讓開發人員恨得牙根癢癢。
Rest API說白了就是一個網頁地址,不過它只返回JSON或者XML格式的數據,而不是HTML網頁。
每個HTTP的Response都包含一個Status Code,表示請求的狀態,是成功,還是失敗,失敗的原因是什么等等。
HTTP的Status Code一共有幾十個,詳細列表可以查看相關標準。但絕大部分人平時只會接觸到最常見的少于10個的代碼:
代碼 |
含義 |
說明 |
200 |
請求成功 |
|
201 |
創建成功 |
專門用于創建新的記錄的時候 |
301 |
永久重定向 |
網址永久變更成另外一個網址 |
302 |
臨時重定向 |
網址臨時變更成另外一個網址 |
400 |
無效的請求 |
請求的網址無效等 |
401 |
沒有登錄 |
需要登錄才能訪問 |
403 |
沒有權限 |
雖然登陸了,但是沒有權限 |
404 |
請求資源不存在 |
請求的東西不存在,比如某個人的信息 |
500 |
服務器端錯誤 |
服務器端發生了錯誤 |
有了這套標準,處理請求的程序首先根據狀態碼判定請求是否成功,然后做相應的處理。
Rest API理論上也應該遵守HTTP的規定,根據不同的情況,返回相應的狀態碼。但理論只是理論,大家對此的認識是不同的?;旧戏殖闪藘膳桑?
這兩派都有重量級的公司參與,比如FaceBook就是200派,而Google, Twilio等是正規派:
200派的理由很簡單:反正我都需要處理返回的JSON,干脆我就把具體狀態寫在JSON里面,就不用管HTTP的狀態碼了,都用200好了。你看Facebook這樣的大公司都用200了。
而正規派的人的理由就顯得略微有點不正規,大部分人說:因為這是規范。Rest API是基于HTTP的,就應該遵守HTTP的狀態碼。
我是正規派的人,但我也覺得上面的理由有點薄弱。到底有什么好處?在什么情況下有好處?拿點實實在在的好處或者理由來?
首先,這肯定不是一個非黑即白的問題,200派和正規派都是可行的。只要API的提供者和請求者協調好,都不會帶來很大的問題。但是我們仍然應該適度遵守HTTP的狀態碼。實實在在的理由如下:
使用了HTTP狀態碼以后,讓API符合了一定的標準,這很好。但HTTP狀態碼不能涵蓋我們具體的業務場景,我們仍然需要定義和業務場景相對應的錯誤碼。下面我推薦一個錯誤處理的返回格式,舉例如下:
{ "status":403,
"error": {
"code":'40041',
"message":"用戶缺少訪問特工名單權限",
"moreInfo":"https://maishucode.com/errors/40041",
"traceId":"9527" },
"data":{
}
}
下面是對每個字段的解釋:
我要說的說完了!雖然這沒有絕對的對錯,但是符合良好的規范,提供充分的信息給調用用肯定是沒錯的。你覺得呢?在留言區留下你的意見吧!
數據分析咨詢請掃描二維碼
若不方便掃碼,搜微信號:CDAshujufenxi
CDA數據分析師證書考試體系(更新于2025年05月22日)
2025-05-26解碼數據基因:從數字敏感度到邏輯思維 每當看到超市貨架上商品的排列變化,你是否會聯想到背后的銷售數據波動?三年前在零售行 ...
2025-05-23在本文中,我們將探討 AI 為何能夠加速數據分析、如何在每個步驟中實現數據分析自動化以及使用哪些工具。 數據分析中的AI是什么 ...
2025-05-20當數據遇見人生:我的第一個分析項目 記得三年前接手第一個數據分析項目時,我面對Excel里密密麻麻的銷售數據手足無措。那些跳動 ...
2025-05-20在數字化運營的時代,企業每天都在產生海量數據:用戶點擊行為、商品銷售記錄、廣告投放反饋…… 這些數據就像散落的拼圖,而相 ...
2025-05-19在當今數字化營銷時代,小紅書作為國內領先的社交電商平臺,其銷售數據蘊含著巨大的商業價值。通過對小紅書銷售數據的深入分析, ...
2025-05-16Excel作為最常用的數據分析工具,有沒有什么工具可以幫助我們快速地使用excel表格,只要輕松幾步甚至輸入幾項指令就能搞定呢? ...
2025-05-15數據,如同無形的燃料,驅動著現代社會的運轉。從全球互聯網用戶每天產生的2.5億TB數據,到制造業的傳感器、金融交易 ...
2025-05-15大數據是什么_數據分析師培訓 其實,現在的大數據指的并不僅僅是海量數據,更準確而言是對大數據分析的方法。傳統的數 ...
2025-05-14CDA持證人簡介: 萬木,CDA L1持證人,某電商中廠BI工程師 ,5年數據經驗1年BI內訓師,高級數據分析師,擁有豐富的行業經驗。 ...
2025-05-13CDA持證人簡介: 王明月 ,CDA 數據分析師二級持證人,2年數據產品工作經驗,管理學博士在讀。 學習入口:https://edu.cda.cn/g ...
2025-05-12CDA持證人簡介: 楊貞璽 ,CDA一級持證人,鄭州大學情報學碩士研究生,某上市公司數據分析師。 學習入口:https://edu.cda.cn/g ...
2025-05-09CDA持證人簡介 程靖 CDA會員大咖,暢銷書《小白學產品》作者,13年頂級互聯網公司產品經理相關經驗,曾在百度、美團、阿里等 ...
2025-05-07相信很多做數據分析的小伙伴,都接到過一些高階的數據分析需求,實現的過程需要用到一些數據獲取,數據清洗轉換,建模方法等,這 ...
2025-05-06以下的文章內容來源于劉靜老師的專欄,如果您想閱讀專欄《10大業務分析模型突破業務瓶頸》,點擊下方鏈接 https://edu.cda.cn/g ...
2025-04-30CDA持證人簡介: 邱立峰 CDA 數據分析師二級持證人,數字化轉型專家,數據治理專家,高級數據分析師,擁有豐富的行業經驗。 ...
2025-04-29CDA持證人簡介: 程靖 CDA會員大咖,暢銷書《小白學產品》作者,13年頂級互聯網公司產品經理相關經驗,曾在百度,美團,阿里等 ...
2025-04-28CDA持證人簡介: 居瑜 ,CDA一級持證人國企財務經理,13年財務管理運營經驗,在數據分析就業和實踐經驗方面有著豐富的積累和經 ...
2025-04-27數據分析在當今信息時代發揮著重要作用。單因素方差分析(One-Way ANOVA)是一種關鍵的統計方法,用于比較三個或更多獨立樣本組 ...
2025-04-25CDA持證人簡介: 居瑜 ,CDA一級持證人國企財務經理,13年財務管理運營經驗,在數據分析就業和實踐經驗方面有著豐富的積累和經 ...
2025-04-25