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

}
相关推荐
Cg1362691597411 分钟前
多态的定义
java·开发语言
云霄IT16 分钟前
新版电脑微信4.1.x.x小程序逆向之——寻找小程序存放位置目录和__APP__.wxapkg
java·微信·小程序
微信api接口介绍17 分钟前
微信社群管理开发
java·开发语言·网络·微信
尘世中一位迷途小书童22 分钟前
Monorepo 工具大比拼:为什么我最终选择了 pnpm + Turborepo?
前端·架构
数据智能老司机23 分钟前
LLM 提示工程——理解 LLM
gpt·架构·llm
尘世中一位迷途小书童27 分钟前
2025年了,你还在用传统的多仓库管理吗?Monorepo 架构深度解析
前端·架构
数据智能老司机1 小时前
LLM 提示工程——提示工程入门
gpt·架构·llm
「QT(C++)开发工程师」1 小时前
C++语言编程规范-并发
java·linux·c++
Meteors.1 小时前
23种设计模式——迭代器模式 (Iterator Pattern)详解
java·设计模式·迭代器模式
自由的疯1 小时前
Java Jenkins+Docker部署jar包
java·后端·架构