まず、書き込みフィルタはZuulFilterを継承し、前記書き換えの実行()メソッドは、情報要求オブジェクトへのアクセス:
CTX = RequestContext.getCurrentContext RequestContextの(); HttpServletRequestを要求ctx.getRequest =(); 文字列servletPath request.getServletPath =();
情報は、GETリクエスト・オブジェクト要求の後に得ることができます。
ストリングaccessSys = request.getParameter( "accessSys")。
ストリングparamData = getRequestBody(リクエスト)。
プライベート文字列getRequestBody(HttpServletRequestのリクエスト){
試み{
入力ストリームv_inputstream = request.getInputStream()。
ByteArrayOutputStreamたBAO =新しいByteArrayOutputStream();
INT X = 0。
{(!(X = v_inputstream.read())= -1)、一方
baos.write(X)。
}
baos.flush()。
新しいString(baos.toByteArray()、UTF_8)を返します。
}キャッチ(例外e){
logger.error(e.getMessage()、E)。
}
リターン「」。
}
次のように図2に示すように、設定情報を横断ルーティング経路における経路情報です。
@ConfigurationProperties(接頭辞= "application.myroutes") パブリッククラスMyRoutesConfig { プライベートマップ<文字列、文字列>ルート; パブリックマップ<文字列、文字列> getRoutes(){ 戻り経路。 } 公共ボイドsetRoutes(MAP <文字列、文字列>ルート){ this.routesの=ルート。 } }
次のようにコンフィギュレーション・ファイルは、次のとおりです
。#カスタムフィルタのルートは参考:RestFaceFilter.javaの
ファイルアプリケーション:
myroutes:
ルート:{
-サービス: 'パスポートプラットフォーム'、
ProxyServiceの: 'パスポート-exservice'
}
IF(!ルート= NULL){ セットの<string>のkeySet = routes.getRoutes()のkeySet()。 (文字列str:のkeySet)のために{ // logger.info( "ルートキーを取得:{}"、STR)。 IF(servletPath.startsWith( "/" + STR + "/")){ restface_forward = routes.getRoutes()(STR)を得ます。 ブレーク; } } }