我们在请求第三方接口的时候通常由比较复杂但是统一的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

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

2万+

被折叠的 条评论
为什么被折叠?



