Spring boot项目中自定义FeignClient的拦截器处理header和签名等信息

本文介绍了在Spring Boot项目中,如何利用RequestInterceptor为FeignClient定制header和签名处理。通过RequestTemplate可以获取并修改请求的各个参数,包括URL、请求体和HTTP方法。文章提供了重置request body的方法及其源码截图。

我们在请求第三方接口的时候通常由比较复杂但是统一的header和签名计算的一系列处理。这个时候就可以使用RequestInterceptor来实现。上代码:

@Slf4j
@Configuration  // a  global feign client interceptor
public class FeignClientsConfigurationInterceptor implements RequestInterceptor {

    @Override
    public void apply(RequestTemplate template) {
        try {
            log.info("=======  FeignClientsConfigurationInterceptor ========");
//反序列化request body,拿到核心的参数projectId,用来获得请求接口用的appkey和appId
JSONObject requestBody= (JSONObject) JSON.parse(new String(template.body()));
            String projectId = (String) requestBody.get("projectId");
//过河拆桥,把projectId从 request body 移除(因为这个参数只是我方程序获取密钥时需要,但请求地第三方接口不需要)
            requestBody.remove("projectId");
            log.info("projectId =" + projectId);
            PingAnKeyProperties pingAnKeyProperties = PingAnKeyProperties.getPingAnKeys(projectId);
            String apiUrl = template.url();
            log.info("apiUrl =" + apiUrl);
            String ap
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值