【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;

    // 错误ip
    private 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", "风控决策引擎执行错误"),

    @Getter
    private String errorCode;

    @Getter
    private 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 {
    //请求失败处理
}

了解更多
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值