中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

API錯誤返回規范有哪些

發布時間:2021-11-16 16:55:07 來源:億速云 閱讀:253 作者:iii 欄目:大數據

本篇內容介紹了“API錯誤返回規范有哪些”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

禁止通過拋異常形式返回API業務錯誤

API禁止拋Checked異常,即業務處理上的參數錯誤、邏輯錯誤、業務錯誤等禁止通過拋異常形式返回,應用Response#code, message表達業務錯誤。

注:不要逼調用方到處寫try{}catch()。

  • 正例:

1
Response<T> saveDesposit(...);
  • 反例:

1
T saveDesposit(...) throws ServiceException, IllegalArgumentException, ValidationException;

禁止通過拋異常形式返回API業務錯誤

API禁止拋Checked異常,即業務處理上的參數錯誤、邏輯錯誤、業務錯誤等禁止通過拋異常形式返回,應用Response#code, message表達業務錯誤。

注:不要逼調用方到處寫try{}catch()。

  • 正例:

1
Response<T> saveDesposit(...);
  • 反例:

1
T saveDesposit(...) throws ServiceException, IllegalArgumentException, ValidationException;

需要調用方做錯誤細分處理的,API提供方務必一并提供判斷工具類

  • 正例:

1
2
3
4
5
6
7
8
9
10
11
public void saveXXX(){
    Response<T> result = xxxWriteService(...)
    if (!result.isSuccess()){
        if (xxxUtils.isBankUnSupport(result.getCode)){   <<<API提供方提供工具類解析code含義,且code含義可持續迭代更新,調用方無感知。
            //銀行渠道未開通,需要特殊提示
            ...
        }else{
            ...
        }
    }
}
  • 反例:

1
2
3
4
5
6
7
8
9
10
11
public void saveXXX(){
    Response<T> result = xxxWriteService(...)
    if (!result.isSuccess()){
        if ("10101".equals(result.getCode)){   <<<調用方按API提供方的錯誤碼值做硬編碼,代碼耦合。
            //銀行渠道未開通,需要特殊提示
            ...
        }else{
            ...
        }
    }
}

【推薦】API返回可直接顯示給用戶的中文提示信息

API失敗時,只有API實現方最清楚是什么原因,該怎么提示。那么,請提供對應的提示信息。

我們系統中存在一些用國際化風格的error message,而當前的國際化實現方式真如你想的那么好用嗎?

error message國際化原理:
  • 代碼中的提示信息國際化配置文件

API錯誤返回規范有哪些

  • 國際化提示原理

image-20180930162340975

1) 提示信息國際化的行為發生在Web層,Web層啟動時會加載Web層的resources/messages提示信息文件

2)當REST API需要返回提示信息時,Web會根據HTTP 請求中的Locale值(例如:zh_CN、zh_TW、en_US、es_ES_Traditional_WIN等)來決定返回哪一種語言的提示信息。將errorMessage以此種語言方式返回給瀏覽器進行提示。

問題:

1)在分布式系統中,各個應用按領域自治,其resources/messages只維護了自身業務需要的errorMessage。

2)當圖中C Service 將errorMessage = template.status.not.match 返回給 XX Service,XX Service直接透傳給XX Web的情況下,XX Web的resources/messages是不包括template.status.not.match的,所以此errorMessage將無法正確的展示其本應該提示的信息。

所以,推薦API返回可直接顯示給用戶的中文提示信息。

  • 正例:

1
2
3
4
5
6
7
8
9
10
11
12
public Response<Boolean> saveTemplate(...) {

    try{
        ...
    }catch(StateMachineException e){
        log.warn("...");
        ...
        return Response.fail("模板配置正在審核中,請在審核完成后再更新");
    }catch(Exception e){
        ...
    }
}
  • 反例:

1
2
3
4
5
6
7
8
9
10
11
12
public Response<Boolean> saveTemplate(...) {

    try{
        ...
    }catch(StateMachineException e){
        log.warn("...");
        ...
        return Response.fail("模板管理狀態機異常");
    }catch(Exception e){
        ...
    }
}

【推薦】返回具備可讀性,引導性的錯誤提示信息

  • 正例:

1
2
3
4
5
6
7
8
9
10
11
12
public Response<Boolean> saveTemplate(...) {

    try{
        ...
    }catch(StateMachineException e){
        log.warn("...");
        ...
        return Response.fail("模板配置正在審核中,請在審核完成后再更新");
    }catch(Exception e){
        ...
    }
}
  • 反例:

例1

1
2
3
4
5
6
7
8
9
10
11
12
public Response<Boolean> saveTemplate(...) {

    try{
        ...
    }catch(StateMachineException e){
        log.warn("...");
        ...
        return Response.fail("模板管理狀態機異常");  <<<< 你作為用戶,是不是嚇一跳?
    }catch(Exception e){
        ...
    }
}

例2

1
2
3
4
5
6
7
8
9
10
11
12
public Response<Boolean> saveTemplate(...) {

    try{
        ...
    }catch(StateMachineException e){
        log.warn("...");
        ...
        return Response.fail(e.getMessage());    <<<< message誰都看不懂,沒有任何意義
    }catch(Exception e){
        ...
    }
}

“API錯誤返回規范有哪些”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

api
AI

浦江县| 拜城县| 鹤峰县| 永登县| 昌图县| 武陟县| 依安县| 新竹县| 黄梅县| 长岭县| 吉木萨尔县| 南投县| 新郑市| 白沙| 扎兰屯市| 潼南县| 文安县| 光山县| 云龙县| 唐山市| 通化市| 仙居县| 平度市| 清丰县| 峡江县| 武陟县| 夏津县| 延吉市| 佳木斯市| 饶河县| 五原县| 灌云县| 廊坊市| 元江| 即墨市| 镇赉县| 渭南市| 周口市| 洱源县| 依安县| 沁阳市|