ビルドにSpringCloudプロジェクト(6):サービスゲートウェイのルーティング構造

第六に、サービスルーティングゲートウェイは

myzuul上記親プロジェクトに新しいモジュールを作成します。1. 
ユーレカディスカバリークライアントは>春クラウド2.ディスカバリー選択
クラウドは春> Zuul routing-選択
アーティファクトとして3.Moduleは、一般的に名前を変更しないと、プロジェクト名
4. SRC次のように\ application.propertiesを、主に以下の\リソースはapplication.yml名前を変更し、ファイルのエンコーディングを変更することは、UTF-8である
:サーバー
  ポート:1003 
春:
  ファイルアプリケーション:
    名前:myzuul 
  プロファイル:
    アクティブ:デフォルト
  Zipkin:
     有効:trueに
     な塩基をURL:HTTP:// localhostを:9411 / 
     ロケータ:
       ディスカバリー:
         有効:trueに
     :SENDER 
       WEB:タイプの
  スルース:
     ウェブ:
       クライアント:
         有効:trueに





 
 
     サンプラー:
       #デフォルトのサンプリングレートは、あなたが要求したデータのすべてを見ることができない、0.1で
       サンプルレートを変更するために#1を、あなたは要求されたデータのすべてを見ることができますが、これは、インタフェースの呼び出し遅延増加します
       確率:1.0 
ユーレカ:
  インスタンス:
    リース・リニューアル間隔ザ・を-in-秒:5#ハートビート時間、サービスの更新間隔(デフォルト30代)
    で-秒リース満了-DURATION-:時間のうち10#ハートビートを、10秒間、サービス契約の有効期限が切れます(デフォルトは90年代のためである)
    好む-IPアドレス:IPサービスレジストリに登録された真の#へ
  :クライアント
    サービスURL:
      defaultzoneます。http:// localhost:1024 /ユーレカ/ 
    FETCH-レジストリ:trueにレジストリに登録された#
    レジストリ-fetch間隔秒:キャッシュ更新時間の5#サービスリスト、デフォルト30秒
Zuul:
  無視-サービス:「*」
  ストリップ接頭辞:転送パス(値のパス)を削除すると、真の#は、転送要求 
  たルート:
    MYSERVICE:MYSERVICEサービスに転送されている/で始まるすべてのリクエストに#のAPI
      パス:/ API / ** 
      をServiceID:MyServiceで


5.pomファイル依存的に増加し、そこリフレッシュのMavenプロジェクト

 
    パブリック静的無効メイン(文字列[] args){< 依存> 
    < groupIdを> org.springframework.cloud </ groupIdを> 
    < たartifactId >春クラウドスターター-Zipkin < / たartifactId > 
</ 依存関係> 

6.オープンSRC \メイン\ javaの\ COM \李\ myzuul MyzuulApplication.java次は、

起動クラス、オープンzuulに@EnableZuulProxy注釈を追加しました。

@EnableZuulProxy 
@SpringBootApplication 
パブリッククラスMyzuulApplication { 

        SpringApplication.run(MyzuulApplication.class、引数); 
    } 

}
 
7.オープニングブラウザHTTP:// localhostを:1003 / API / getTime 


8.増加の認証セキュリティ、SRC \メイン\ javaのCOM \李 \ myzuul \新しいパッケージ以下フィルタ、新しいMyFilter.java 

@Component 
パブリッククラスZuulFilter myFilterを{延び

    、プライベート静的ロガーLoggerFactory.getLogger =(MyFilter.class)ログ
    @Override 
    パブリック文字列のfilterType(){ 
        ;リターン"プレ" 
    } 

    @Override 
    {公共のint filterOrderを()
        0リターン; 
    } 

    @Override 
    パブリックブールshouldFilter(){ 
        trueに戻り; 
    } 

    @Override 
    公共の実行オブジェクト(){
        RequestContextのCTX = RequestContext.getCurrentContext()。 
        のHttpServletRequest ctx.getRequest要求=();
        log.info(String.Formatの( "%sの>>>%s"は、request.getMethod()、request.getRequestURL()のtoString())); 
        オブジェクトaccessToken = request.getParameter( "トークン")。
        IF(accessToken == NULL){ 
            log.warn( "トークンが空です")。
            ctx.setSendZuulResponse(偽); 
            ctx.setResponseStatusCode(401)。
            {試みる
                ctx.getResponse()にgetWriter()書き込み( "トークンが空です")。。。
            }キャッチ(例外e){} 

            戻りヌル。
        } 
        log.info( "OK")。
        ヌルを返します。
    } 
} 
 
8.打开浏览器访问のhttp:// localhostを:1003 / API / getTimeトークン= 22

 

おすすめ

転載: www.cnblogs.com/liw66/p/12298346.html