Java 在外部客户端拦截器中获取请求url
我正在使用SpringFeign客户端进行http请求 外域配置类Java 在外部客户端拦截器中获取请求url,java,spring,spring-boot,spring-cloud-feign,feign,Java,Spring,Spring Boot,Spring Cloud Feign,Feign,我正在使用SpringFeign客户端进行http请求 外域配置类 DefaultConfig.class public class DefaultConfig { @Bean public OkHttpClient client() { return new OkHttpClient(); } @Bean Logger.Level feignLoggerLevel() { return Logger.Level.FUL
DefaultConfig.class
public class DefaultConfig {
@Bean
public OkHttpClient client() {
return new OkHttpClient();
}
@Bean
Logger.Level feignLoggerLevel() {
return Logger.Level.FULL;
}
@Bean
public Decoder feignDecoder() {
return new JacksonDecoder();
}
@Bean
public Encoder feignEncoder() {
return new JacksonEncoder();
}
@Bean
public RequestInterceptor requestInterceptor() {
return template -> {
template.header(Authorization, apiKey);
};
}
}
我的客户端界面:
@FeignClient(name = "default", url = "${base-url}",
configuration = DefaultConfig.class)
public interface {
@PostMapping(value = "/users/")
Response createUser(@RequestBody Map<String, ?> requestBody);
@GetMapping(value = "/users/{id}")
Response getUserDetails(@PathVariable String id);
}
@FeignClient(name=“default”,url=“${base url}”,
configuration=DefaultConfig.class)
公共接口{
@后期映射(value=“/users/”)
响应createUser(@RequestBody映射RequestBody);
@GetMapping(value=“/users/{id}”)
响应getUserDetails(@PathVariable字符串id);
}
现在的问题是,我需要为GET和POST请求使用不同的授权密钥。在配置类中,我需要通过调用的url来区分请求。我们如何从请求者拦截器获取url,或者通过任何其他方式来实现这一点。我们可以为此创建单独的拦截器,但我尝试对这两种情况使用相同的拦截器。您需要的一切似乎都在模板对象中
@Bean
public RequestInterceptor requestInterceptor() {
return template -> {
if ("GET".equals(template.method()) {
template.header(Authorization, apiKey);
} else {
template.header(Authorization, differentApiKey);
}
};
}