我正在努力在我的Spring Boot应用程序中集成第三方API。
第三方API身份验证的工作方式:
使用当前访问令牌,我可以调用API。
是否可以使用RestTemplate无缝处理这种情况?
我已经尝试过手动处理这种情况,因此,如果我从API取回了401,则我发送了刷新令牌请求,重写了我取回的密钥并重试了该请求,但不确定如何处理将api密钥存储在其中情况下,我需要重启服务器。
答案 0 :(得分:2)
使用ClientHttpRequestInterceptor
可以轻松完成此操作,其中您可以轻松替换请求标头,例如发生401
:
@Override
public ClientHttpResponse intercept(
HttpRequest request,
byte[] body,
ClientHttpRequestExecution execution) throws IOException {
ClientHttpResponse response = execution.execute(request, body);
if(response.getStatusCode() == HttpStatus.UNAUTHORIZED) {
request.getHeaders().replace("Auth-Header", getNewToken());
return execution.execute(request, body);
}
return response;
}
请参阅here,以获取更多指导。