日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

【Java】Response约定

發布時間:2023/12/18 java 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Java】Response约定 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

老姜博客了解更多:Response約定

1 Response定義

推薦使用如下格式:

package cn.com.bestpay;public class Response<T> implements Serializable{private Boolean success;private String errorCode;private String errorMsg;private T body;// 原錯誤碼private String primaryErrorCode;// 原錯誤信息private String primaryErrorMsg;// 錯誤ipprivate String primaryErrorIp; }

2 Response設值規范

2.1 success

success = true: 業務正常受理成功

success = false: 業務受理失敗情況,包括如下場景:業務數據異常(臟數據等)、配置異常、執行異常、網絡異常、數據庫異常,中間件異常以及外部異常等等.

2.2 errorCode

當success=false時設置,errorCode由各應用自己定義當前錯誤分配的錯誤碼.

建議各系統定義唯一的BusiEnum枚舉進行統一維護,示例代碼:

import lombok.Getter;public enum BusiError {REQUEST_ARGS_INVALID("00001", "請求參數無效,請重新確認后重試"),SYSTEM_CONFIG_WRONG("00002", "系統配置錯誤"),INNER_ERROR("10000", "系統內部錯誤"),RISK_ENGINE_EXECUTE_ERROR("10001", "風控決策引擎執行錯誤"),@Getterprivate String errorCode;@Getterprivate String errorMsg;BusiError(String errorCode,String errorMsg){this.errorCode = errorCode;this.errorMsg = errorMsg;} }

2.3 errorMsg

當success=false時設置,同errorCode,各應用自己定義當前錯誤碼應該提示的錯誤描述

2.4 primaryError*

這塊大家要注意:primaryErrorCode、primaryErrorMsg, primaryErrorIp這三個的使用場景和目的.

場景:分布式微服務應用下,一個應用請求往往整個鏈路經過多個系統,任何環節都會出現問題,為了快速暴露出現問題的節點,設置以上三個字段用來向上傳遞最根源的問題.

目的:快速定位請求調用鏈路哪個環節出現問題

示例:

A —> B —> C —> D(發生異常)

說明:A應用是面向客戶的接口,整個請求調用鏈上經過B、C、D應用,在D應用發生驗證異常了,導致請求無法處理,報錯給前端,那錯誤碼設置流程為:

D:該應用是問題發生的最初的位置,所以對于D應用

primaryErrorCode = errorCode(D應用當前錯誤對外約定的錯誤碼) primaryErrorMsg = errorMsg(D應用當前錯誤對外約定的錯誤信息) primaryErrorIp = IPUtil.getServerIp()

C: C應用拿到D應用的錯誤信息返回值后,根據自己的業務規則,設置當前異常情況下Response的errorCode, errorMsg.
但是此時 primaryErrorCode、primaryErrorMsg、primaryErrorIp的值是D的Response里面的取值

B, A: 同 C的處理一致

3 Response處理規范

調用外部服務時,對Response的處理流程如下:

Response<XXXDTO> response = yyyFacade.xxApi(request); if (response.isSuccess()) {// 請求受理成功XXXDTO data = response.getBody();//需檢查body內容是否為null,避免空指針if (data == null) {} else {} } else {//請求失敗處理 }

了解更多

總結

以上是生活随笔為你收集整理的【Java】Response约定的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。