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 でリクエスト ヘッダー パラメーター名を指定した場合、それを取得するときにも対応する名前を使用する必要があります。

参考リンク
偽リクエストヘッダ設定・送信の問題(同期メソッド設定ヘッダ・非同期メソッド設定ヘッダ)

おすすめ

転載: blog.csdn.net/weixin_43811057/article/details/133066180