假设客户端动态授权标头

时间:2018-05-03 20:39:52

标签: feign

我有一个服务,它使用授权标头获取http请求。处理请求时,我想使用Feign Client查询其他服务。对其他服务的查询应包括不同的授权标头。

2 个答案:

答案 0 :(得分:0)

您可以简单地将标题作为参数传递,并相应地在界面中声明您的方法。请在下面找到代码片段。

当您运行日志级别已满的Feign客户端(feign.client.config.default.loggerLevel = full)时,您将看到授权标头(在我的情况下是OAuth Bearer访问令牌)。

希望这有帮助。

一切顺利, 维姆

@FeignClient(name="mde", url="${MDE.campaignServiceEndpoint}")
public interface CampaignClientService {
    @RequestMapping(method = RequestMethod.GET, value = "/useCases/search/findByName?name={name}")
    @Cacheable("placementUseCase")
    PlacementUseCase findUseCaseByName(@RequestHeader(value = "Authorization", required = true) String authorizationHeader, @PathVariable("name") String name);

答案 1 :(得分:0)

如果您不使用spring直接使用Feign客户端

然后,您可以在Feign界面中传递类似Header的参数

@Headers("Content-Type: application/json")
@RequestLine("PATCH infusionsoft/contacts/{contactId}?format={format}")
InfusionsoftFullContact updateContact(@Param("contactId") Long contactId, @Param("format") String format,InfusionsoftFullContact contact,@HeaderMap Map<String, Object> headerMap);

HeaderParams可以如下所示

Map<String, Object> headerMap = new HashMap<>();

   headerMap.put("application", "FDX");
   headerMap.put("Authorization", "Basic aW5mdXNpb25zb2Z0OnBhc3N3b3Jk");
   headerMap.put("platform",user.getPlatform());
   headerMap.put("platformKey", user.getPlatformKey());
   headerMap.put("email",user.getEmail());
   headerMap.put("Content-Type", MediaType.APPLICATION_JSON);