feign インターフェイスを呼び出してリクエスト ヘッダーを手動で設定する
需要シナリオ:
プロバイダー サービスの一部のパラメーターはリクエスト ヘッダーから取得されますが、コンシューマー サービスが偽インターフェイスを呼び出す場合、インターフェイスのリクエスト ヘッダー自体にはプロバイダーが必要とするパラメーターがありません。このとき、いくつかのパラメーターを手動で設定したいと考えています。偽りのインターフェース!
2 つのソリューション
2.1 @RequestHeader アノテーションを feign インターフェースに追加する
このメソッドは、メソッドを実行する前に必要なパラメータを取得し、取得した値をパラメータとして実行するメソッドに渡します。
このメソッドによって呼び出される Feign インターフェイスを変更する必要があります。パラメータに @RequestHeader のアノテーションを追加します。このアノテーションは、変数がリクエスト パラメータやリクエスト本文ではなくリクエスト ヘッダーに配置されることを意味します。
2.2 プロバイダは通常、リクエストヘッダからパラメータを取得します。
@GetMapping("getName")
public Void getMerchantCompareInfo(@RequestParam(value = "name") String name,HttpServletRequest request) {
String token = request.getHeader("token");
String token2 = request.getHeader("X-TOKEN");
System.out.println("token = " + token);
System.out.println("X-TOKEN = " + token2);
return null;
}
2.3 コンシューマがパラメータを手動で転送する
@GetMapping("getName")
public Void getMerchantCompareInfo() {
feignParamApi.getMerchantCompareInfo("name","12344");
return null;
}
2.4 テスト
@RequestHeader でリクエスト ヘッダー パラメーター名を指定した場合、それを取得するときにも対応する名前を使用する必要があります。