微服务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;
    }

}
相关推荐
2601_9668714014 小时前
OpenGL-自主高性能三维GIS平台架构与实现-第二季课
架构
奈斯先生Vector15 小时前
OpenScience 安装失败怎么办?Windows 环境、API 配置与本地服务排错指南
人工智能·windows·架构·开源·aigc·midjourney
小蒜学长15 小时前
vue旅游攻略网站(代码+数据库+LW)
java·数据库·vue.js·spring boot·后端·旅游
Dawson Zhu15 小时前
【AI架构前沿】MEMO:解耦推理与记忆,破解大模型“知识更新“与“灾难性遗忘“的两难困境
人工智能·架构·aigc·agi
凤山老林15 小时前
轻量级规则引擎落地:Spring Boot 集成 LiteFlow 实现动态业务编排与热更新
java·spring boot·后端·规则引擎·liteflow
夏贰四15 小时前
管控数据加载调度如何规避任务冲突?数据加载运维监控体系该如何搭建?
java·大数据·运维
山甫aa15 小时前
JavaWeb后端开发学习手册
java·开发语言·数据库·学习·mysql·springboot·web
星期一研究室15 小时前
长文里的观点太容易混在一起?用引用块把重点分清楚
微服务·产品·设计
鱼鳞_15 小时前
热门八股-JVM
java·jvm
ly768915 小时前
XML 从入门到实践:语法、命名空间、XPath、XSD 与 Java 安全解析
xml·java·python