91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何設(shè)計(jì)API返回碼(錯(cuò)誤碼)?

馬哥Linux運(yùn)維 ? 來(lái)源:Ken的雜談 ? 2023-05-15 09:05 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

一、前言

客戶端請(qǐng)求 API,通常需要通過(guò)返回碼來(lái)判斷 API 返回的結(jié)果是否符合預(yù)期,以及該如何處理返回的內(nèi)容等

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

API 返回碼的設(shè)計(jì)還是要認(rèn)真對(duì)待,畢竟好的返回碼設(shè)計(jì)可以降低溝通成本以及程序的維護(hù)成本

二、HTTP 狀態(tài)碼參考

以 HTTP 狀態(tài)碼為例,為了更加清晰的表述和區(qū)分狀態(tài)碼的含義,HTTP 狀態(tài)做了分段。

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

圖片

對(duì)于后端開發(fā)來(lái)說(shuō),我們通常見到的都是:

2XX 狀態(tài)碼,比如 200-> 請(qǐng)求成功,

5XX 狀態(tài)碼,比如 502-> 服務(wù)器異常,通常就是服務(wù)沒正常運(yùn)行,或者代碼執(zhí)行出錯(cuò)

通過(guò)狀態(tài)碼即可初步判斷問題原因,HTTP 狀態(tài)的設(shè)計(jì)思路值得借鑒。

三、參數(shù)約定

雖說(shuō)是返回碼設(shè)計(jì),但是只有 code 是不行的,還要有對(duì)應(yīng)的 message,讓人可以看懂

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

參考 HTTP 狀態(tài)碼的思路,我們對(duì)錯(cuò)誤碼進(jìn)行分段

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

通過(guò)這樣的設(shè)計(jì),不論是程序還是人都可以非常方便的區(qū)分 API 的返回結(jié)果,關(guān)鍵是統(tǒng)一!

四、個(gè)性化 Message

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

比方說(shuō) 20000-29999 表示訂單創(chuàng)建失敗:

20001,訂單創(chuàng)建失敗,存在進(jìn)行中的訂單

20002,訂單創(chuàng)建失敗,上一個(gè)訂單正在排隊(duì)創(chuàng)建中

這兩種錯(cuò)誤情況如果是給用戶看,可能就只適合看到:很抱歉,您有一個(gè)正在進(jìn)行中的訂單,請(qǐng)到我的訂單列表中處理。

但是對(duì)于 API 來(lái)說(shuō),返回的信息又必須是準(zhǔn)確的,但用戶看到的就必須轉(zhuǎn)譯,這個(gè)轉(zhuǎn)譯的工作調(diào)用方可以做,但是通常 API 提供者來(lái)提供個(gè)性化的 Message 能力會(huì)更好

我們可以把轉(zhuǎn)譯的消息配置到數(shù)據(jù)庫(kù),并緩存到 Redis 或者 API 本機(jī)

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

圖片

然后在請(qǐng)求處理結(jié)束即將返回的時(shí)候,根據(jù) application_id+code,去匹配替換 message

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

圖片

這樣我們就可以讓手機(jī) APP 的用戶、微信小程序的用戶、網(wǎng)頁(yè)下單的企業(yè)用戶看到不同的消息

五、返回信息的統(tǒng)一處理

有了統(tǒng)一的 code,我們就可以通過(guò) Nginx 或者 APM 工具統(tǒng)計(jì) API 請(qǐng)求 Code 數(shù)量及分布信息。

我們可以根據(jù)單位時(shí)間內(nèi) 99999 的數(shù)量來(lái)做 API 的異常告警

我們可以根據(jù) Code 的返回餅圖,幫助我們發(fā)現(xiàn)系統(tǒng)、業(yè)務(wù)流程中的問題

等等

總之,好的返回碼設(shè)計(jì),可以幫助我們提高溝通效率,降低代碼的維護(hù)成本。







審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • API
    API
    +關(guān)注

    關(guān)注

    2

    文章

    2365

    瀏覽量

    66744
  • APM
    APM
    +關(guān)注

    關(guān)注

    1

    文章

    74

    瀏覽量

    13879
  • HTTP協(xié)議
    +關(guān)注

    關(guān)注

    0

    文章

    67

    瀏覽量

    10627

原文標(biāo)題:如何設(shè)計(jì)API返回碼(錯(cuò)誤碼)?

文章出處:【微信號(hào):magedu-Linux,微信公眾號(hào):馬哥Linux運(yùn)維】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    Linux錯(cuò)誤碼介紹

    在處理一些程序出錯(cuò)語(yǔ)句中,不管是用戶空間還是內(nèi)核空間,通常都會(huì)返回一個(gè)錯(cuò)誤碼。例如`return -ERROR`。
    發(fā)表于 06-27 15:48 ?2739次閱讀
    Linux<b class='flag-5'>錯(cuò)誤碼</b>介紹

    掛載sramfs文件系統(tǒng)到外掛sdram ,掛載時(shí)返回錯(cuò)誤碼為-1,怎么解決?

    掛載sramfs文件系統(tǒng)到外掛sdram ,掛載時(shí)返回錯(cuò)誤碼為-1。求大神指點(diǎn)。謝謝各位大佬。
    發(fā)表于 09-16 06:41

    LabVIEW找不到錯(cuò)誤碼,USRP

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

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

    Node節(jié)點(diǎn)顯示錯(cuò)誤,運(yùn)行返回錯(cuò)誤碼 65543,我查了下這個(gè)的解釋是“The power supply voltage level is out of range. Check the supply
    發(fā)表于 03-23 21:50

    請(qǐng)問Vxworks remove 返回錯(cuò)誤碼 errno為0xb83dd0 表示什么意思?

    請(qǐng)問Vxworks remove 返回錯(cuò)誤碼 errno為0xb83dd0 表示什么意思?
    發(fā)表于 07-02 08:19

    Linux如何查看系統(tǒng)提供的錯(cuò)誤碼

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

    采用CH573做藍(lán)牙主的時(shí)候,連接斷開后返回錯(cuò)誤碼怎么處理?

    連接斷開后返回錯(cuò)誤碼代表上面意識(shí),從那個(gè)手冊(cè)可以看到,Disconnected...Reason:8
    發(fā)表于 07-28 07:26

    modbus的功能錯(cuò)誤會(huì)返回什么錯(cuò)誤信息?

    modbus在通信的過(guò)程中功能錯(cuò)誤會(huì)返回什么錯(cuò)誤碼
    發(fā)表于 10-13 07:48

    Oracle錯(cuò)誤碼大全

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

    Docker容器退出是什么意思?導(dǎo)致該退出的動(dòng)作是什么

    exit code:代表一個(gè)進(jìn)程的返回,通過(guò)系統(tǒng)調(diào)用 exit_group 來(lái)觸發(fā)。在 POSIX 中,0 代表正常的返回,而 1-255 代表異常
    的頭像 發(fā)表于 08-02 09:55 ?2518次閱讀

    異常處理和錯(cuò)誤碼管理

    前言 在業(yè)務(wù)邏輯中,通常使用兩種方式處理異常: 返回錯(cuò)誤碼:優(yōu)點(diǎn)是性能更好,但是不宜維護(hù)。 拋出異常:可以使得代碼更清晰,可讀性更好,更符合面向?qū)ο蟆?選擇哪種需要根據(jù)場(chǎng)景而定,不管如何選擇,只要
    的頭像 發(fā)表于 09-25 14:51 ?1580次閱讀
    異常處理和<b class='flag-5'>錯(cuò)誤碼</b>管理

    CAN總線常見錯(cuò)誤碼及其解決方法

    錯(cuò)誤碼,這些錯(cuò)誤碼可以幫助我們?cè)\斷和解決問題。 1. 錯(cuò)誤幀(Error Frame) 錯(cuò)誤碼 :當(dāng)CAN控制器檢測(cè)到一個(gè)幀的錯(cuò)誤時(shí),會(huì)發(fā)送
    的頭像 發(fā)表于 11-12 10:05 ?1.4w次閱讀

    串口通信中常見的錯(cuò)誤碼含義

    在串口通信中,常見的錯(cuò)誤碼及其含義對(duì)于診斷和解決通信問題至關(guān)重要。以下是一些常見的串口通信錯(cuò)誤碼及其解釋: CE_BREAK :檢測(cè)到中斷信號(hào)。這通常意味著接收到的某個(gè)字節(jié)數(shù)據(jù)缺少合法的停止位
    的頭像 發(fā)表于 11-22 09:26 ?4458次閱讀

    電商API常見錯(cuò)誤排查指南:避免集成陷阱

    ,幫助您高效避免集成陷阱。內(nèi)容基于真實(shí)電商API實(shí)踐,確??煽啃院蛯?shí)用性。 一、常見錯(cuò)誤類型 電商API集成中,錯(cuò)誤往往源于認(rèn)證、數(shù)據(jù)、限流等環(huán)節(jié)。以下是高頻問題: 認(rèn)證失敗
    的頭像 發(fā)表于 07-11 14:21 ?2030次閱讀
    電商<b class='flag-5'>API</b>常見<b class='flag-5'>錯(cuò)誤</b>排查指南:避免集成陷阱

    NCS放大器DAD3350常見錯(cuò)誤碼及解決方案

    NCS放大器DAD3350在工業(yè)應(yīng)用中可能出現(xiàn)的錯(cuò)誤碼及解決方案如下: ? 一、常見錯(cuò)誤碼及原因 ? ? 過(guò)載報(bào)警(如LV低電壓報(bào)警、OVC過(guò)電流報(bào)警) ? ? 原因 ?: 電源電壓異常(如過(guò)低或
    的頭像 發(fā)表于 07-12 09:41 ?895次閱讀