gpt4 book ai didi

spring - 如何使用 Spring Boot 和 @FeignClient 发送 Bearer 授权 token

转载 作者:行者123 更新时间:2023-12-04 13:36:34 30 4
gpt4 key购买 nike

我正在使用 Spring Boot 编写一个与 HTTP REST 服务器交互的应用程序。我连接到的服务器之一(Wit.ai)使用了一个承载授权 token 。产生成功响应的 curl 请求如下所示:

GET /message?q=sample message HTTP/1.1
Host: api.wit.ai
Authorization: Bearer XXXXXXXXXXXXX
Cache-Control: no-cache
Postman-Token: 526c3a11-8e61-4552-aa19-e913f6473753

wit.ai 文档对 token 进行了以下说明,

Wit.ai uses OAuth2 as an authorization layer. As such, every API request must contain an Authorize HTTP header with a token Access tokens are app specific.



我正在尝试使用@FeignClient 在 Spring Boot 应用程序中向此端点发送 GET 请求。但是我的端点似乎不接受我的授权 token 。
这是我的 FeignClient 代码
@FeignClient(name="witGetter", url = "${wit.url}")
public interface WitGetter {
@RequestMapping(method = RequestMethod.GET, value = "/message?v=20180507q={text}",
headers = {"Authorization: Bearer XXXXXXXXXXXXX"})
WitResponse getWitResponse(@PathVariable("text") final String text);
}

传递这种授权 token 的正确方法是什么?我尝试了其他一些事情,但无济于事。感谢您的任何建议!!!

顺便说一句,以下代码使用传统的 Feign 接口(interface)工作,但在这种情况下我需要使用 @FeignClient。
public interface WitGetter {
@Headers("Authorization: Bearer XXXXXXXXXXXXX")
@RequestLine("GET /message?q={text}")
WitResponse getWitResponse(@Param("text") String text);
}

(下面的代码在一个单独的配置文件中)
@Bean
public WitGetter defaultWitGetter(@Value("https://api.wit.ai") final String witUrl){
return Feign.builder().decoder(new GsonDecoder()).target(WitGetter.class, witUrl);

}

编辑

使用上述代码时我得到的错误代码是:

Exception in thread "main" feign.FeignException: status 400 reading WitGetter#getWitResponse(String,String); content: { "error" : "Bad auth, check token/params", "code" : "no-auth" }

最佳答案

通过 Spring Cloud 使用 Feign 时,您可以像定义标准 Spring MVC Controller 一样使用它。
请在此处查看我关于使用 Feign 传递 header 的文章:
https://arnoldgalovics.com/passing-headers-with-spring-cloud-feign/
快速提示:您可以添加 @RequestHeader("Authorization") String bearerToken方法定义的参数。
然后当然叫它 client.method(..., "Bearer " + token)

关于spring - 如何使用 Spring Boot 和 @FeignClient 发送 Bearer 授权 token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50237709/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com