get请求url在外国客户机拦截器中

jq6vz3qz  于 2021-07-13  发布在  Java
关注(0)|答案(1)|浏览(335)

我使用springfeign客户机进行http请求。
外国配置类

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);

}

现在的问题是我需要使用不同的授权密钥来获取和发布请求。在configuration类中,我需要通过调用的url来区分请求。我们如何从请求者拦截器获取url,或者通过其他方式来实现这一点。我们可以为此创建单独的拦截器,但我尝试对这两种情况使用相同的拦截器。

yr9zkbsy

yr9zkbsy1#

您需要的一切似乎都在template对象中。

@Bean
public RequestInterceptor requestInterceptor() {
    return template -> {
        if ("GET".equals(template.method()) {
            template.header(Authorization, apiKey);
        } else {
            template.header(Authorization, differentApiKey);
        }
    };
}

相关问题