Spring Cloud Netflix Zuul プロキシ ゲートウェイを使用してバックエンド REST サービスにアクセスする実装 (コード)
この記事の内容は、Spring Cloud Netflix Zuul プロキシ ゲートウェイを使用してバックエンド REST サービスにアクセスする実装 (コード) に関するものです。必要な方は参考にしていただければ幸いです。 。
1. 概要
この記事では、互いに別々にデプロイされたフロントエンド アプリケーションとバックエンド REST API サービスの間で通信する方法について説明します。その目的は、ブラウザーのクロスドメイン リソース アクセスと同一オリジン ポリシーの制限を解決し、同じサーバーにない場合でもページ UI がバックグラウンド API を呼び出せるようにすることです。
ここでは、UI アプリケーションと単純な REST API という 2 つの別個のアプリケーションを作成しました。UI アプリケーションで Zuul プロキシを使用して、REST API への呼び出しをプロキシします。 Zuul は、Netflix の JVM ベースのルーターおよびサーバー側のロード バランサーです。 Spring Cloud は、組み込み Zuul プロキシと優れた統合を備えています。
2.REST アプリケーション
私たちの REST API アプリケーションは、シンプルな Spring Boot アプリケーションです。この記事では、サーバーにデプロイされた API はポート 8081 で実行されます。
設定ファイル
server.contextPath=/spring-zuul-foos-resourceserver.port=80 81
まず、使用するリソースの基本的な DTO を定義します:
public class Foo { private long id; private String name; // standard getters and setters }
単純なコントローラーを定義します:
@Controllerpublic class FooController { @RequestMapping(method = RequestMethod.GET, value = "/foos/{id}") @ResponseBody public Foo findById( @PathVariable long id, HttpServletRequest req, HttpServletResponse res) { return new Foo(Long.parseLong(randomNumeric(2)), randomAlphabetic(4)); } }
3. フロントエンド アプリケーション
私たちの UI アプリケーションも単純な Spring Boot アプリケーションです。この記事では、アプリケーションはポート 8080 で実行されています。
まず、Spring Cloud 経由で zuul サポートの依存関係を UI アプリケーションの pom に追加する必要があります。これを yml で行います:
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-zuul</artifactId></dependency>
注:
- リソースサーバー Foos をプロキシします。
- UI からの「/foos/」で始まるすべてのリクエストは、次の Foos リソース サーバーにルーティングされます: http://loclahost:8081/spring-zuul-foos-resource/foos/
zuul: routes: foos: path: /foos/** url: http://localhost:8081/spring-zuul-foos-resource/foos
ここで最も重要な点は、相対URLを使用してAPIにアクセスする方法です。
API アプリケーションは UI アプリケーションと同じサーバーにデプロイされていないため、相対 URL は機能せず、プロキシなしでは機能しないことに注意してください。ただし、プロキシを通じて、Zuul プロキシを介して Foo リソースにアクセスします。Zuul プロキシは、これらのリクエストを API が実際にデプロイされている場所にルーティングするように構成されています。
最後に、ブート対応アプリケーション:
<html> <body ng-app="myApp" ng-controller="mainCtrl"> <script src="angular.min.js"></script> <script src="angular-resource.min.js"></script> <script> var app = angular.module('myApp', ["ngResource"]); app.controller('mainCtrl', function($scope,$resource,$http) { $scope.foo = {id:0 , name:"sample foo"}; $scope.foos = $resource("/foos/:fooId",{fooId:'@id'}); $scope.getFoo = function(){ $scope.foo = $scope.foos.get({fooId:$scope.foo.id}); } });</script><p> <h1 id="Foo-nbsp-Details">Foo Details</h1> <span>{{foo.id}}</span> <span>{{foo.name}}</span> <a href="#" ng-click="getFoo()">New Foo</a> </p> </body> </html>
これは @EnableZuulProxy アノテーションを使用して Zuul プロキシを開始します。これは非常にクリーンで簡潔です。
4. テストを実行します
2 つのアプリケーション システムをそれぞれ起動し、ブラウザに http://localhost:8080/index を入力します
[New Foo] ボタンをクリックするたびにバックグラウンド REST API にアクセスします。 5. カスタム Zuul フィルター
複数の Zuul フィルターが利用可能です。独自のカスタム フィルターを作成することもできます:
@EnableZuulProxy@SpringBootApplicationpublic class UiApplication extends SpringBootServletInitializer { public static void main(String[] args) { SpringApplication.run(UiApplication.class, args); } }
この単純なフィルターは、「Test」というヘッダーをリクエストの属性に追加するだけです - もちろん、必要に応じてリクエストを増やすことができます。
6. カスタム Zuul フィルターをテストします
最後に、テストしてカスタム フィルターが機能していることを確認しましょう - まず、Foos リソース サーバー上の FooController を変更します:
@Componentpublic class CustomZuulFilter extends ZuulFilter { @Override public Object run() { RequestContext ctx = RequestContext.getCurrentContext(); ctx.addZuulRequestHeader("Test", "TestSample"); return null; } @Override public boolean shouldFilter() { return true; } // ...}
さて、テストしてみましょう。
@Controllerpublic class FooController { @GetMapping("/foos/{id}") @ResponseBody public Foo findById( @PathVariable long id, HttpServletRequest req, HttpServletResponse res) { if (req.getHeader("Test") != null) { res.addHeader("Test", req.getHeader("Test")); } return new Foo(Long.parseLong(randomNumeric(2)), randomAlphabetic(4)); } }
Spring Cloud Feign は HTTP を使用してリモート サービスをリクエストします
spring-cloud-sleuth+zipkin 追跡サービスの実装 (2)
以上がSpring Cloud Netflix Zuul プロキシ ゲートウェイを使用してバックエンド REST サービスにアクセスする実装 (コード)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











エンタープライズ アプリケーションの複雑さが増すにつれ、アプリケーションを複数のマイクロサービスに分割し、マイクロサービス間の連携を通じてビジネス プロセス全体を完了する企業が増えています。このアーキテクチャ アプローチにより、アプリケーションの安定性と拡張性が向上しますが、負荷分散やサービス検出などの新たな問題も生じます。この記事では、Spring Cloud を使用してマイクロサービス アーキテクチャの下での負荷分散の問題を解決する方法を紹介します。負荷分散とは何ですか?負荷分散 (LoadBalancing) は、複数のサーバーとネットワークのバランスをとることを指します。

個人的には、ソースコードを読むには使えることが前提だと思っています、慣れてしまえば他の人がどのように実装したか推測できるようになりますし、関連する公式ドキュメントがある場合は公式ドキュメントを読みましょう。

インターネットの発展とテクノロジーの継続的な更新により、従来の単一アプリケーションではユーザーのニーズを満たすことができなくなり、マイクロサービスの概念が登場しました。 SpringCloud は、Pivotal によって開始されたマイクロサービス開発ツールキットで、開発者にマイクロサービス アーキテクチャ アプリケーションを構築、デプロイ、管理するための非常に便利な方法を提供します。この記事では、SpringCloud の概念とアーキテクチャ、マイクロサービス開発プロセス、およびサービス指向 SpringCloud マイクロサービス開発について詳しく紹介します。

インターネットの急速な発展に伴い、エンタープライズレベルのアプリケーションの複雑さは日に日に増しています。この状況に対応して、マイクロサービス アーキテクチャが登場しました。そのモジュール性、独立した展開、および高い拡張性により、今日ではエンタープライズレベルのアプリケーション開発の最初の選択肢となっています。 Spring Cloud は優れたマイクロサービス アーキテクチャとして、実際のアプリケーションで大きな利点を示しています。この記事では、SpringCloud マイクロサービス アーキテクチャのデプロイと運用保守について紹介します。 1. SpringCloud マイクロサービス アーキテクチャ SpringCloud をデプロイする

Java を使用して Spring Cloud Kubernetes に基づいたコンテナ オーケストレーション アプリケーションを開発する方法 コンテナ テクノロジの開発と広範な適用に伴い、コンテナ オーケストレーション ツールは開発者にとって不可欠な部分になりました。 Kubernetes は最も人気のあるコンテナ オーケストレーション ツールの 1 つとして業界標準になっています。この状況において、Spring Cloud と Kubernetes を組み合わせることで、コンテナ オーケストレーションに基づいたアプリケーションを簡単に開発できます。この記事で詳しく紹介します

Java 言語での Spring Cloud フレームワークの紹介 クラウド コンピューティングとマイクロサービスの人気に伴い、Spring Cloud フレームワークは Java 言語でクラウド ネイティブ アプリケーションを構築するための好ましいフレームワークの 1 つになりました。この記事では、Spring Cloud フレームワークの概念と機能、および Spring Cloud を使用してマイクロサービス アーキテクチャを構築する方法を紹介します。 SpringCloud の概要 SpringCloud フレームワークは、SpringBoot に基づくマイクロサービス フレームワークです。それはです

マイクロサービス アーキテクチャの人気に伴い、ますます多くの企業開発チームが Spring Cloud を使用して独自のマイクロサービス システムを構築し始めています。分散環境では、分散ロックの実装は重要な技術的課題です。この記事では、Spring Cloud フレームワークの下で分散ロックのマイクロサービス プラクティスを実装する方法を紹介します。まず、分散ロックとは何かを理解する必要があります。分散ロックは、共有リソースへのアクセスを保護するために使用されるテクノロジーであり、分散環境で複数のノードが同じリソースを同時に変更したり、変更したりしないようにすることができます。

マイクロサービス アーキテクチャの適用が広がるにつれ、効果的に監視し、警告を発する方法が、開発者や運用保守担当者が直面する問題の 1 つになっています。この記事では、SpringCloud マイクロサービス アーキテクチャの下で監視と警報を実践する具体的な方法に焦点を当てます。 1. 監視指標の選択 監視する前に、まず監視する必要がある指標を決定する必要があります。一般的な指標には、CPU 使用率、メモリ使用量、ネットワーク帯域幅、ディスク容量、HTTP リクエストの応答時間、サービス コールの数と遅延などが含まれます。これらのインジケーターはさまざまな監視ツールを通じて使用できます。
