SpringBoot はどのように Feign 呼び出しを通じてヘッダー内のパラメーターを渡しますか?

PHPz
リリース: 2023-05-16 20:38:07
転載
2441 人が閲覧しました

[SpringBoot] Feign 呼び出しを介してヘッダーのパラメーターを渡す

Feign を介してヘッダー パラメーターを渡す方法

問題の説明

Feign を使用して SpringCloud の別のサービスをリクエストしますAPIインターフェイスを使用する場合、ヘッダーにパラメータを渡す必要がありますが、特別な処理を行わないとヘッダーのパラメータは失われます。

解決策

オプション 1: @RequestHeader(name = "headerName") を渡す

例: Feign は次のように定義されます

@FeignClient(name = "service-name") public interface XXXFeignClient { @RequestMapping(value = "/user/getUserTicket", method = RequestMethod.GET) String getUserTicket(@RequestParam("id") String id); }
ログイン後にコピー

サービス service-name の /user/getUserTicket インターフェイスは、ヘッダーからリファラー データを取得する必要があります。その後、上記のコードを変更できます。

@FeignClient(name = "service-name") public interface XXXFeignClient { @RequestMapping(value = "/user/getUserTicket", method = RequestMethod.GET) String getUserTicket(@RequestParam("id") String id, @RequestHeader(name = "Referer") String referer); }
ログイン後にコピー

次に、呼び出し時に ## などのリファラー パラメーターを渡します。 #

public String getTicketById(@RequestParam("id") String id, HttpServletRequest request) { String referer = request.getHeader("Referer"); return xxxFeignClient.getUserTicket(id, referer); }
ログイン後にコピー

オプション 2: RequestInterceptor インターフェイスを実装することによる

まず、RequestInterceptor インターフェイスを実装する apply メソッドを次のようにカスタマイズします。

import org.springframework.stereotype.Configuration; import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.ServletRequestAttributes; import javax.servlet.http.HttpServletRequest; import java.util.Enumeration; @Configuration public class FeignConfiguration implements RequestInterceptor { @Override public void apply(RequestTemplate requestTemplate) { ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder .getRequestAttributes(); HttpServletRequest request = attributes.getRequest(); Enumeration headerNames = request.getHeaderNames(); if (headerNames != null) { while (headerNames.hasMoreElements()) { String name = headerNames.nextElement(); String values = request.getHeader(name); requestTemplate.header(name, values); } } } }
ログイン後にコピー

次に、カスタム構成クラスを Feign に構成します。以上です Feign でのインターフェースヘッダパラメータの転送は実現できます

@FeignClient(value = "service-name" ,configuration = FeignConfiguration.class) public interface XXXFeignClient { }
ログイン後にコピー

以上がSpringBoot はどのように Feign 呼び出しを通じてヘッダー内のパラメーターを渡しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:yisu.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!