微服务Feign组件远程调用自定义解码器

Feign远程调用响应结果格式

java 复制代码
public class Result<T> {
    /**
     * 响应码,200为成功
     */
    private Integer code;

    /**
     * 响应信息
     */
    private String message;

    /**
     * 响应的具体对象
     */
    private T data;
}

自定义Feign解码器

java 复制代码
@Component // 注入Spring的IOC容器中,所有的Feign远程调用响应生效
public class FeignResultDecoder implements Decoder {

    @Override
    public Object decode(Response response, Type type) throws IOException, DecodeException, FeignException {
        if (response.body() == null) {
            throw new DecodeException(response.status(), "未返回正确的数据", response.request());
        }
        String bodyStr = Util.toString(response.body().asReader(Util.UTF_8));
        // TODO 进行转换(jackson提供json2obj方法实现Result转换)
        Result result = (Result) JsonUtil.json2obj(bodyStr, type);
        // TODO 最终响应结果为Result中的泛型对象
        return result.data;
    }

}
相关推荐
江米小枣tonylua7 小时前
译:设计生产级 RAG 架构
架构
nanxun88612 小时前
记一次诡异的 Docker 容器"串包"故障排查
java
怕浪猫12 小时前
领域特定语言(Domain-Specific Language, DSL)
设计模式·程序员·架构
怕浪猫13 小时前
哪些软件对 Chrome DevTools Protocol 频繁使用
人工智能·架构·前端框架
用户15630681035114 小时前
Day01 | Java 基础(Java SE)
java
行者全栈架构师16 小时前
Maven dependency:tree 的 8 个高级用法
java·后端
Jack2020 小时前
HarmonyOS APP事件驱动大揭秘
架构
米丘20 小时前
微前端之 Web Components 完全指南
微服务·html
行者全栈架构师20 小时前
IDEA 中 Maven 项目的 15 个红色报错快速解决方法
java·后端
令人头秃的代码0_020 小时前
mac(m5)平台编译openjdk
java