Zuulは、Netflixが生成するJVMルーティングとサーバー側に基づくロードバランサーです。
Zuul機能:
Zuul's Rules Engineは、JVM言語を介してルールとフィルターの書き込みを許可し、JavaとGroovyベースの構造をサポートします。
構成プロパティzuul.max.host.connectionsは、zuul.host.host.maxtotalconnections(接続の総数)とzuul.host.maxperrouteconnections(ルートあたりの接続数)の2つの新しい構成プロパティに置き換えられています。
1.なぜこれを使用するのですか
SpringCloudに構築されたマイクロサービスシステムでは、Gateway Zuulは通常、ユーザー検証などのフィルタリング操作を実行するために使用されます。たとえば、ユーザーはヘッダーまたはURLパラメーターにトークンを保存します。ゲートウェイレイヤーは、このトークンを使用してユーザーのユーザーIDを見つけてリクエストに保存する必要があります。これにより、後続のマイクロサービスを直接使用してトークンでのクエリを避けることができます。
2。基本的な知識
Zuulでの最大の使用法は、ルーティングに加えてフィルターです。カスタムフィルターは、インターフェイスZuFilterを実装する必要があります。 run()メソッドでは、使用できます
requestContext ctx = requestContext.getCurrentContext(); httpservletrequest request = ctx.getRequest();
リクエストを取得しますが、リクエストにはgetParameter()のみがありますが、setParameter()メソッドはありません。そのため、URLパラメーターを直接変更することは不可能です。さらに、setattribute()はreqeustで使用できますが、スコープが異なるため、ここで設定された属性は後続のマイクロサービスで取得できないため、別の方法を考慮する必要があります。
3。特定のプラクティス
最後の方法は使用することです
ctx.setRequest(new httpservletrequestwrapper(request){})コンテキストでリクエストを再構築する方法は、次のとおりです。
javax.servlet.http.httpservletrequestwrapperをインポートします。 // userIdを追加してください{inputstream in = ctx.getRequest()。getInputStream(); string body = rreaterutils.copytostring(in、charset.forname( "utf-8")); System.out.println( "body:" + body); jsonobject json = jsonobject.fromobject(body); json.put( "userid"、userid);文字列newbody = json.toString(); system.out.println( "newbody:" + newbody); final byte [] reqbodybytes = newbody.getBytes(); ctx.setRequest(new httpservletrequestwrapper(request){@override public servletinputStream getInputStream()throws ioException {return new servletinputStreamWrapper(reqbodybytes);} @Override public int getContentLength( getContEntLengthLong(){reqbodybytes.length}}); } catch(ioexception e){e.printstacktrace(); }アイデアは、要求された入力ストリームを取得し、それを書き直すこと、つまりJSONパラメーターを書き直すことです。
後続のマイクロサービスコントローラーでは、形状を使用できます
@RequestBody Map <String、object> body ====== body.get( "userid");
このようにして、ZuFilterでユーザーIDを通過させます
4。いくつかの試み
httpservletrequestwrapperを書き直したとき、 getParameterNames()とgetParameterMap()メソッドを書き換えて、URLパラメーターの書き換えを望んでいましたが、有効になりませんでした。
要約します
上記は、編集者が紹介したSpringCloudのリクエストパラメーター情報を変更する方法です。それがあなたに役立つことを願っています。ご質問がある場合は、メッセージを残してください。編集者は時間内に返信します。 wulin.comのウェブサイトへのご支援ありがとうございます!