ResponseUtil 减少代码行数

该代码示例展示了如何使用ResponseUtil工具类处理Feign调用的响应。在接收到的SingleResponse不为成功状态时,可以选择抛出异常或不抛出异常,具体行为取决于业务需求。ResponseUtil中包含了解包方法,当响应失败时会触发自定义异常。
摘要由CSDN通过智能技术生成
ResponseUtil
import com.alibaba.cola.dto.SingleResponse;
import com.alibaba.cola.exception.SysException;

import java.util.HashMap;
import java.util.function.Supplier;

public class ResponseUtil {
    public static void main(String[] args) {

        //当 feign 调用 Response响应不为success 时 不抛异常的情况 自行判断,不用调用 unpack 解包
        SingleResponse<HashMap<String, Object>> response = getResponse(0);
        if (response.isSuccess()) {
            System.out.println(response);
        }


        //当 feign 调用 Response响应不为success 时 直接抛异常
        HashMap<String, Object> data = ResponseUtil.unpack(getResponse(123));
        System.out.println(data);

        HashMap<String, Object> data2 = ResponseUtil.unpack(getResponse(0));
        System.out.println(data2);


    }

    /**
     * 模拟feign 调用
     * @param i
     * @return
     */
    private static SingleResponse<HashMap<String, Object>> getResponse(int i) {
        if (i == 0) {
            return SingleResponse.buildFailure("入参为0调用不成功 code", "入参为0调用不成功 errMessage");
        }
        HashMap<String, Object> map = new HashMap<>();
        SingleResponse<HashMap<String, Object>> response = SingleResponse.of(map);
        map.put("1111111111111", i);
        return response;
    }

    /**
     * 解包
     */
    public static <T> T unpack(SingleResponse<T> singleResponse) {
        //todo 需要根绝实际情况修改 SysException
        return unpackOrElseThrow(singleResponse, () -> new SysException("feign调用 Response 响应不成功 code todo", "feign调用 Response 响应不成功 errMessage todo"));
    }


    public static <X extends Throwable, T> T unpackOrElseThrow(SingleResponse<T> singleResponse, Supplier<? extends X> exceptionSupplier) throws X {
        if (singleResponse.isSuccess()) {
            return singleResponse.getData();
        } else {
            throw exceptionSupplier.get();
        }
    }
}
maven依赖
        <dependency>
            <groupId>com.alibaba.cola</groupId>
            <artifactId>cola-component-dto</artifactId>
            <version>4.3.2</version>
        </dependency>

        <dependency>
            <groupId>com.alibaba.cola</groupId>
            <artifactId>cola-component-exception</artifactId>
            <version>4.3.2</version>
        </dependency>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值