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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > java >内容正文

java

【Java】Response约定

發(fā)布時(shí)間:2023/12/18 java 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Java】Response约定 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

老姜博客了解更多: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;// 原錯(cuò)誤碼private String primaryErrorCode;// 原錯(cuò)誤信息private String primaryErrorMsg;// 錯(cuò)誤ipprivate String primaryErrorIp; }

2 Response設(shè)值規(guī)范

2.1 success

success = true: 業(yè)務(wù)正常受理成功

success = false: 業(yè)務(wù)受理失敗情況,包括如下場(chǎng)景:業(yè)務(wù)數(shù)據(jù)異常(臟數(shù)據(jù)等)、配置異常、執(zhí)行異常、網(wǎng)絡(luò)異常、數(shù)據(jù)庫(kù)異常,中間件異常以及外部異常等等.

2.2 errorCode

當(dāng)success=false時(shí)設(shè)置,errorCode由各應(yīng)用自己定義當(dāng)前錯(cuò)誤分配的錯(cuò)誤碼.

建議各系統(tǒng)定義唯一的BusiEnum枚舉進(jìn)行統(tǒng)一維護(hù),示例代碼:

import lombok.Getter;public enum BusiError {REQUEST_ARGS_INVALID("00001", "請(qǐng)求參數(shù)無(wú)效,請(qǐng)重新確認(rèn)后重試"),SYSTEM_CONFIG_WRONG("00002", "系統(tǒng)配置錯(cuò)誤"),INNER_ERROR("10000", "系統(tǒng)內(nèi)部錯(cuò)誤"),RISK_ENGINE_EXECUTE_ERROR("10001", "風(fēng)控決策引擎執(zhí)行錯(cuò)誤"),@Getterprivate String errorCode;@Getterprivate String errorMsg;BusiError(String errorCode,String errorMsg){this.errorCode = errorCode;this.errorMsg = errorMsg;} }

2.3 errorMsg

當(dāng)success=false時(shí)設(shè)置,同errorCode,各應(yīng)用自己定義當(dāng)前錯(cuò)誤碼應(yīng)該提示的錯(cuò)誤描述

2.4 primaryError*

這塊大家要注意:primaryErrorCode、primaryErrorMsg, primaryErrorIp這三個(gè)的使用場(chǎng)景和目的.

場(chǎng)景:分布式微服務(wù)應(yīng)用下,一個(gè)應(yīng)用請(qǐng)求往往整個(gè)鏈路經(jīng)過(guò)多個(gè)系統(tǒng),任何環(huán)節(jié)都會(huì)出現(xiàn)問(wèn)題,為了快速暴露出現(xiàn)問(wèn)題的節(jié)點(diǎn),設(shè)置以上三個(gè)字段用來(lái)向上傳遞最根源的問(wèn)題.

目的:快速定位請(qǐng)求調(diào)用鏈路哪個(gè)環(huán)節(jié)出現(xiàn)問(wèn)題

示例:

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

說(shuō)明:A應(yīng)用是面向客戶的接口,整個(gè)請(qǐng)求調(diào)用鏈上經(jīng)過(guò)B、C、D應(yīng)用,在D應(yīng)用發(fā)生驗(yàn)證異常了,導(dǎo)致請(qǐng)求無(wú)法處理,報(bào)錯(cuò)給前端,那錯(cuò)誤碼設(shè)置流程為:

D:該應(yīng)用是問(wèn)題發(fā)生的最初的位置,所以對(duì)于D應(yīng)用

primaryErrorCode = errorCode(D應(yīng)用當(dāng)前錯(cuò)誤對(duì)外約定的錯(cuò)誤碼) primaryErrorMsg = errorMsg(D應(yīng)用當(dāng)前錯(cuò)誤對(duì)外約定的錯(cuò)誤信息) primaryErrorIp = IPUtil.getServerIp()

C: C應(yīng)用拿到D應(yīng)用的錯(cuò)誤信息返回值后,根據(jù)自己的業(yè)務(wù)規(guī)則,設(shè)置當(dāng)前異常情況下Response的errorCode, errorMsg.
但是此時(shí) primaryErrorCode、primaryErrorMsg、primaryErrorIp的值是D的Response里面的取值

B, A: 同 C的處理一致

3 Response處理規(guī)范

調(diào)用外部服務(wù)時(shí),對(duì)Response的處理流程如下:

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

了解更多

總結(jié)

以上是生活随笔為你收集整理的【Java】Response约定的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。