9

各リクエストでアクセストークンを送信する必要がある外部サービスと統合する必要があります。アクセス トークンの有効期限は短い (わずか数時間)。アクセス トークンを楽観的に使用することにしました。現在のトークンで外部サービスを呼び出します。401 を取得した場合は、トークンを更新して、もう一度外部 API を呼び出します。

ClientHttpRequestInterceptor を使用して、説明した再試行メカニズムを実装することにしました。

public ClientHttpResponse intercept(HttpRequest request, byte[] body, ClientHttpRequestExecution execution) throws IOException {
   ClientHttpResponse response = execution.execute(request, body);
   if(response.getStatusCode() == UNAUTHORIZED) {
       refreshToken();
       updateToken(request);
       response = execution.execute(request, body);
   }
   return response;
}

テストしましたが動作しますが、execution.execute() を 2 回呼び出すことはできますか? 禁止されているという情報は見つかりませんでしたが、一方でそのようなコードも見たことがありません。

4

1 に答える 1