【发布时间】:2018-10-14 06:26:25
【问题描述】:
我有一项服务可以获取带有授权标头的 http 请求。在处理请求时,我想使用 Feign Client 来查询另一个服务。对其他服务的查询应包含不同的授权标头。
【问题讨论】:
标签: feign
我有一项服务可以获取带有授权标头的 http 请求。在处理请求时,我想使用 Feign Client 来查询另一个服务。对其他服务的查询应包含不同的授权标头。
【问题讨论】:
标签: feign
您只需将标头作为参数传递,然后相应地在界面中声明您的方法。请在下面找到代码的 sn-p。
当您在日志级别已满 (feign.client.config.default.loggerLevel=full) 的情况下运行 Feign 客户端时,您将看到授权标头(在我的情况下是 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);
【讨论】:
如果你是直接使用Feign客户端,没有spring
然后你可以在 Feign Interface 中传递类似这样的 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);
【讨论】: