美文网首页
Spring—RestTemplate设置Interceptor

Spring—RestTemplate设置Interceptor

作者: 小胖学编程 | 来源:发表于2021-05-21 14:18 被阅读0次

使用RestTemplate调用第三方服务时,可能需要设置公共的参数,例如签名信息。所以需要在拦截器中统一的处理。而RestTemplate提供了ClientHttpRequestInterceptor。便于我们拦截处理。

1. 设置

@Configuration
public class XxRestTemplateConfig {


    @Bean(name = "xxRestTemplate")
    public RestTemplate xxRestTemplate(XxConfigProperties xxConfigProperties) {
    
        RestTemplate restTemplate = new RestTemplate(new BufferingClientHttpRequestFactory(
                new SimpleClientHttpRequestFactory()
        ));
        //设置消息处理器
        for (HttpMessageConverter<?> converter : restTemplate.getMessageConverters()) {
            if (converter instanceof StringHttpMessageConverter) {
                ((StringHttpMessageConverter) converter).setDefaultCharset(StandardCharsets.UTF_8);
            }
        }
        //设置拦截器
        restTemplate.setInterceptors(Collections.singletonList(xxRestAuthInterceptor(xxConfigProperties)));
        return restTemplate;
    }


    @Bean
    public XxRestAuthInterceptor xxRestAuthInterceptor(XxConfigProperties xxConfigProperties) {
        return new XxRestAuthInterceptor(xxConfigProperties);
    }
}

创建ClientHttpRequestInterceptor实现类:

@Slf4j
public class XxRestAuthInterceptor implements ClientHttpRequestInterceptor {
    //自定义的配置文件
    private XxConfigProperties xxConfigProperties;

    public WPSRestAuthInterceptor(XxConfigProperties xxConfigProperties) {
        this.xxConfigProperties = xxConfigProperties;
    }

    @Override
    public ClientHttpResponse intercept(HttpRequest request, byte[] body, ClientHttpRequestExecution execution) throws IOException {
        HttpMethod method = request.getMethod();
        //修改请求的header对象
        request.getHeaders().set("sign", sign);
        //执行请求
        ClientHttpResponse response = execution.execute(request, body);
        return response;
    }

}

2. 使用

    @Autowired
    @Qualifier("xxRestTemplate")
    private RestTemplate wpsRestTemplate;

相关文章

SpringCloud-feign调用时使用RequestInterceptor设置request对象

相关文章

网友评论

      本文标题:Spring—RestTemplate设置Interceptor

      本文链接:https://www.haomeiwen.com/subject/ipubjltx.html