我有一个服务,它使用授权标头获取http请求。处理请求时,我想使用Feign Client查询其他服务。对其他服务的查询应包括不同的授权标头。
答案 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);