<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

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

          共 1880字,需瀏覽 4分鐘

           ·

          2022-03-16 01:28

          以下內(nèi)容來(lái)自公眾號(hào)逆鋒起筆,關(guān)注每日干貨及時(shí)送達(dá)

          來(lái)源:https://ken.io/note/api-errorcode
          -or-resultcode-desgin

          一、前言

          客戶端請(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)做了分段
          對(duì)于后端開發(fā)來(lái)說(shuō),我們通常見到的都是:
          2XX狀態(tài)碼,比如200->請(qǐng)求成功,
          5XX狀態(tài)碼,比如502->服務(wù)器異常,通常就是服務(wù)沒(méi)正常運(yùn)行,或者代碼執(zhí)行出錯(cuò)。
          通過(guò)狀態(tài)碼即可初步判斷問(wèn)題原因,HTTP狀態(tài)的設(shè)計(jì)思路值得借鑒。

          三、參數(shù)約定

          雖說(shuō)是返回碼設(shè)計(jì),但是只有code是不行的,還要有對(duì)應(yīng)的message,讓人可以看懂。
          最近整理了一份最新的面試資料,里面收錄了2021年各個(gè)大廠的面試題,打算跳槽的小伙伴不要錯(cuò)過(guò),點(diǎn)擊領(lǐng)取吧!
          參考HTTP狀態(tài)碼的思路,我們對(duì)錯(cuò)誤碼進(jìn)行分段。
          通過(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ì)更好。微信搜索readdot,關(guān)注后回復(fù)視頻教程獲取23種精品資料
          我們可以把轉(zhuǎn)譯的消息配置到數(shù)據(jù)庫(kù),并緩存到Redis或者API本機(jī)。
          然后在請(qǐng)求處理結(jié)束即將返回的時(shí)候,根據(jù)application_id+code,去匹配替換message。
          request-api-get-my-message
          這樣我們就可以讓手機(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ù)流程中的問(wèn)題
          等等。

          總之,好的返回碼設(shè)計(jì),可以幫助我們提高溝通效率,降低代碼的維護(hù)成本。
          怎樣編寫好的 API?
          4 種主流的 API 架構(gòu)風(fēng)格對(duì)比
          API 快速開發(fā)平臺(tái)設(shè)計(jì)思考
          6 個(gè)常用的 API 接口在線管理平臺(tái)
          老舊的 API,該如何處理?

          瀏覽 55
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  大香蕉网站视频 | 2021国产精彩精品视频 | 国产毛片一区二区三区在线视频 | 就去操逼| 欧美黄色大片免费在线观看 |