精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何設計API返回碼(錯誤碼)?

馬哥Linux運維 ? 來源:Ken的雜談 ? 2023-05-15 09:05 ? 次閱讀

一、前言

客戶端請求 API,通常需要通過返回碼來判斷 API 返回的結果是否符合預期,以及該如何處理返回的內容等

相信很多同學都吃過返回碼定義混亂的虧,有的 API 用返回碼是 int 類型,有的是 string 類型,有的用 0 表示成功,又有的用 1 表示成功,還有用”true” 表示成功,碰上這種事情,只能說:頭疼

API 返回碼的設計還是要認真對待,畢竟好的返回碼設計可以降低溝通成本以及程序的維護成本

二、HTTP 狀態碼參考

以 HTTP 狀態碼為例,為了更加清晰的表述和區分狀態碼的含義,HTTP 狀態做了分段。

32f83dae-f2b6-11ed-90ce-dac502259ad0.png

圖片

對于后端開發來說,我們通常見到的都是:

2XX 狀態碼,比如 200-> 請求成功,

5XX 狀態碼,比如 502-> 服務器異常,通常就是服務沒正常運行,或者代碼執行出錯

通過狀態碼即可初步判斷問題原因,HTTP 狀態的設計思路值得借鑒。

三、參數約定

雖說是返回碼設計,但是只有 code 是不行的,還要有對應的 message,讓人可以看懂

3324402a-f2b6-11ed-90ce-dac502259ad0.png

參考 HTTP 狀態碼的思路,我們對錯誤碼進行分段

3340f0da-f2b6-11ed-90ce-dac502259ad0.png

通過這樣的設計,不論是程序還是人都可以非常方便的區分 API 的返回結果,關鍵是統一!

四、個性化 Message

通常我們的 message 都是寫給工程師看的,但是在不同的場景下,同樣的錯誤,可能需要給用戶看到不一樣的錯誤提示。

比方說 20000-29999 表示訂單創建失敗:

20001,訂單創建失敗,存在進行中的訂單

20002,訂單創建失敗,上一個訂單正在排隊創建中

這兩種錯誤情況如果是給用戶看,可能就只適合看到:很抱歉,您有一個正在進行中的訂單,請到我的訂單列表中處理。

但是對于 API 來說,返回的信息又必須是準確的,但用戶看到的就必須轉譯,這個轉譯的工作調用方可以做,但是通常 API 提供者來提供個性化的 Message 能力會更好

我們可以把轉譯的消息配置到數據庫,并緩存到 Redis 或者 API 本機

33534ed8-f2b6-11ed-90ce-dac502259ad0.png

圖片

然后在請求處理結束即將返回的時候,根據 application_id+code,去匹配替換 message

3367b18e-f2b6-11ed-90ce-dac502259ad0.png

圖片

這樣我們就可以讓手機 APP 的用戶、微信小程序的用戶、網頁下單的企業用戶看到不同的消息

五、返回信息的統一處理

有了統一的 code,我們就可以通過 Nginx 或者 APM 工具統計 API 請求 Code 數量及分布信息。

我們可以根據單位時間內 99999 的數量來做 API 的異常告警

我們可以根據 Code 的返回餅圖,幫助我們發現系統、業務流程中的問題

等等

總之,好的返回碼設計,可以幫助我們提高溝通效率,降低代碼的維護成本。







審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • API
    API
    +關注

    關注

    2

    文章

    1487

    瀏覽量

    61831
  • APM
    APM
    +關注

    關注

    1

    文章

    71

    瀏覽量

    12991
  • HTTP協議
    +關注

    關注

    0

    文章

    61

    瀏覽量

    9706

原文標題:如何設計API返回碼(錯誤碼)?

文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運維】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    Linux錯誤碼介紹

    在處理一些程序出錯語句中,不管是用戶空間還是內核空間,通常都會返回一個錯誤碼。例如`return -ERROR`。
    發表于 06-27 15:48 ?2046次閱讀
    Linux<b class='flag-5'>錯誤碼</b>介紹

    用CubeMX生成LwIP項目,發送使用netconn_write時,會返回錯誤碼-6無法發送的原因?

    現象:用CubeMX生成LwIP(LwIP2.0.3版本)項目,netconn編程,接收沒有問題,發送使用netconn_write時,會返回錯誤碼-6(Illegal value),無法發送。而用
    發表于 04-03 07:25

    LabVIEW找不到錯誤碼,USRP

    用LabVIEW操作NI USRP出現錯誤:The specified session handle is invalid or does not correspond to an active session.并且查不到該錯誤碼-1074118640,求大神指教
    發表于 04-14 16:50

    cRIO電流輸出板卡9266,輸出時返回錯誤碼 65543是什么意思,如何解決?

    Node節點顯示錯誤,運行返回錯誤碼 65543,我查了下這個的解釋是“The power supply voltage level is out of range. Check the supply
    發表于 03-23 21:50

    請問Vxworks remove 返回錯誤碼 errno為0xb83dd0 表示什么意思?

    請問Vxworks remove 返回錯誤碼 errno為0xb83dd0 表示什么意思?
    發表于 07-02 08:19

    Linux如何查看系統提供的錯誤碼

    在用Linux下寫C的代碼的時候,利用open、create函數總是會出現錯誤但是返回值為 -1 ,并不能定位錯誤在哪里,所以查看系統提供的錯誤碼就顯得特別有必要了需要包含頭文件并且定
    發表于 07-05 07:31

    采用CH573做藍牙主的時候,連接斷開后返回錯誤碼怎么處理?

    連接斷開后返回錯誤碼代表上面意識,從那個手冊可以看到,Disconnected...Reason:8
    發表于 07-28 07:26

    modbus的功能錯誤返回什么錯誤信息?

    modbus在通信的過程中功能錯誤返回什么錯誤碼
    發表于 10-13 07:48

    Oracle錯誤碼大全

    Oracle錯誤碼大全 ORA-00000 normal, successful completion Cause An operation has completed normally
    發表于 12-26 13:44 ?55次下載

    微辰金服新中付POS商戶警惕這五個錯誤碼

      POS機一旦提示錯誤碼怎么辦?微辰金服新中付POS商戶警惕這五個錯誤碼。  1、持卡人信用卡被刷拒付  2、因套導致信用卡消費賬單與實際消費地不同引發  3、轉賬業務刷拒付  4、同行競爭惡意
    發表于 03-29 16:06 ?408次閱讀

    Bada系統學習-錯誤碼(Error Codes)

    錯誤碼是指在安裝或者加載bada應用時發生錯誤時顯示的編碼.每個錯誤都有對應的錯誤碼.這個編碼是用于檢查這個錯誤的原因.下圖
    發表于 04-02 14:35 ?548次閱讀

    Docker容器退出是什么意思?導致該退出的動作是什么

    exit code:代表一個進程的返回,通過系統調用 exit_group 來觸發。在 POSIX 中,0 代表正常的返回,而 1-255 代表異常
    的頭像 發表于 08-02 09:55 ?686次閱讀

    異常處理和錯誤碼管理

    前言 在業務邏輯中,通常使用兩種方式處理異常: 返回錯誤碼:優點是性能更好,但是不宜維護。 拋出異常:可以使得代碼更清晰,可讀性更好,更符合面向對象。 選擇哪種需要根據場景而定,不管如何選擇,只要
    的頭像 發表于 09-25 14:51 ?704次閱讀
    異常處理和<b class='flag-5'>錯誤碼</b>管理

    CAN總線常見錯誤碼及其解決方法

    錯誤碼,這些錯誤碼可以幫助我們診斷和解決問題。 1. 錯誤幀(Error Frame) 錯誤碼 :當CAN控制器檢測到一個幀的錯誤時,會發送
    的頭像 發表于 11-12 10:05 ?607次閱讀

    串口通信中常見的錯誤碼含義

    在串口通信中,常見的錯誤碼及其含義對于診斷和解決通信問題至關重要。以下是一些常見的串口通信錯誤碼及其解釋: CE_BREAK :檢測到中斷信號。這通常意味著接收到的某個字節數據缺少合法的停止位
    的頭像 發表于 11-22 09:26 ?207次閱讀