Spring Cloudゲートウェイにおけるクエリ・パームへのパス・パーム変換
1737 ワード
問題声明
どのように、私はあなたのAPIのうちの1つについての質問paramsへの着信要求にパス・パスを変えることができますか.
TLドクター
.filters(fs -> fs.rewritePath("/(?<country>.\\S+)/(?<locale>.\\S+)/v(?<version>\\d+)/my-endpoint(?<queryParams>.*)",
"/api/v2/my-endpoint?locale=${locale}&country=${country}&"))
解決策
APIの進化は、マイクロサービスベースの開発の一部です.パスのparamsとしてロケールとカントリーを持っていました.我々が同じAPIの新しいバージョンを書いていたので、我々はそれらのパス・パームを代わりにQuery Paramsとして通過させることに決めました.
古いバージョンからより新しいバージョンへの移行をサポートするために、クライアントとAPIの2つのバージョンの間でgateway
を追加することを決めました.
課題は、クライアントが以前のようにロケールと国の情報を送信し続けることになりますが、我々はどうにか、新しいバージョンを呼び出す前にこれらのparamsを変換する必要があります.
驚いたことに、我々は比較的容易にそれを行うことができました.必要なのは、FilterSpec
に追加された次のroute
です
.filters(fs -> fs.rewritePath("/(?<country>.\\S+)/(?<locale>.\\S+)/v(?<version>\\d+)/my-endpoint(?<queryParams>.*)",
"/api/v2/my-endpoint?locale=${locale}&country=${country}&"))
その場所では、我々のゲートウェイは、クライアントに影響を与えることなく、APIの両方のバージョンに要求をルートすることができます.ここに、ゲートウェイアプリケーションのために集められたログがあります.
Incoming request http://localhost:8081/us/en/v1/my-endpoint?channel=WEB is routed to id: my-api-v2-/us/en/v1/my-endpoint, uri:http://localhost:8080/api/v2/my-endpoint?locale=en&country=us&?channel=WEB
上記のログ文は、stackoverflowの上でこのthreadで利用できるコードを使用することによって生成されました
Reference
この問題について(Spring Cloudゲートウェイにおけるクエリ・パームへのパス・パーム変換), 我々は、より多くの情報をここで見つけました
https://dev.to/amitmisra16/converting-path-params-to-query-params-in-spring-cloud-gateway-3mno
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
.filters(fs -> fs.rewritePath("/(?<country>.\\S+)/(?<locale>.\\S+)/v(?<version>\\d+)/my-endpoint(?<queryParams>.*)",
"/api/v2/my-endpoint?locale=${locale}&country=${country}&"))
.filters(fs -> fs.rewritePath("/(?<country>.\\S+)/(?<locale>.\\S+)/v(?<version>\\d+)/my-endpoint(?<queryParams>.*)",
"/api/v2/my-endpoint?locale=${locale}&country=${country}&"))
Incoming request http://localhost:8081/us/en/v1/my-endpoint?channel=WEB is routed to id: my-api-v2-/us/en/v1/my-endpoint, uri:http://localhost:8080/api/v2/my-endpoint?locale=en&country=us&?channel=WEB
Reference
この問題について(Spring Cloudゲートウェイにおけるクエリ・パームへのパス・パーム変換), 我々は、より多くの情報をここで見つけました https://dev.to/amitmisra16/converting-path-params-to-query-params-in-spring-cloud-gateway-3mnoテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol