ホームページ >Java >&#&チュートリアル >Spring API Gateway と Micronaut を使用した API ゲートウェイからのマイクロサービスの集約&# Swagger UI

Spring API Gateway と Micronaut を使用した API ゲートウェイからのマイクロサービスの集約&# Swagger UI

Barbara Streisand
Barbara Streisandオリジナル
2025-01-16 18:22:10954ブラウズ

このガイドでは、マイクロサービス API ドキュメントを合理化するために、Swagger 3 (OpenAPI) と Spring Cloud Gateway を統合する方法を示します。 Java 21、Spring Boot 3.2、Micronaut を活用して、堅牢でユーザーフレンドリーなソリューションを作成します。

Swagger/OpenAPI を選択する理由

現在 OpenAPI 仕様 (OAS) となっている Swagger は、主要な API ドキュメント標準です。その利点は次のとおりです:

  • 業界標準: ツールの豊富なエコシステムによって広く採用され、サポートされています。
  • インタラクティブなドキュメント: 開発者が API を直接調べてテストできるようにする、ユーザーフレンドリーなドキュメントを生成します。
  • 開発者の生産性の向上: SDK のコード生成やサーバー スタブなどの機能により、API 開発が加速します。
  • コラボレーションの強化: 開発者、テスター、関係者に API 機能の共通理解を提供します。
  • 簡素化されたテストとデバッグ: Swagger UI には、API 応答を検証するためのテスト インターフェイスが含まれています。
  • 言語間のサポート: 多様なテクノロジー スタック間でシームレスに統合します。
  • 簡単な統合: Spring Boot や Micronaut などの人気のあるフレームワークとの簡単な統合。
  • 自動化に優しい: API ライフサイクル管理の自動化をサポートします。
  • エンタープライズ オプション付きのオープン ソース: エンタープライズ オプション付きの無料のオープンソース ツールとして利用できます。

Spring Cloud Gateway: 財団

Spring Framework 5、Spring Boot 2、Project Reactor 上に構築された Spring Cloud Gateway は、マイクロサービスへのリクエストのルーティングとフィルター処理の中心的なエントリ ポイントとして機能します。

Spring Cloud Gateway の機能:

以下の図は、Spring Cloud Gateway の動作を示しています。

Aggregate Microservices

クライアントリクエストは、定義されたルートに対して評価されます。 一致するリクエストはゲートウェイ Web ハンドラーによって処理され、リクエスト プロキシの前後にプレフィルターとポストフィルターが実行されます。

アプリケーションの構築:

Aggregate Microservices

前提条件:

  1. ジャワ 21
  2. Gradle (または Maven)
  3. Spring Boot 3.2 以降
  4. Spring Cloud Gateway と Swagger についての理解
  5. マイクロノート

段階的な実装:

ステップ 1: Micronaut アプリケーション (ジョブ、特典、タグ サービス) を作成する

Micronaut Launcher ([ランチャーへのリンク]) を使用して、3 つの Micronaut アプリケーション、job-serviceperk-servicetag-service を作成します。 機能として Java または Kotlin、最新の安定した Micronaut バージョン、Swagger UI、および OpenAPI を選択します。 ビルド ツールとして Gradle または Maven を使用します。 各サービスには、アクセス可能な Swagger UI があります (例: http://localhost:8081/swagger-ui/index.html の場合は job-service)。 CLI を使用することもできます:

<code class="language-bash">mn create-app --build=gradle_kotlin --jdk=21 --lang=java --test=junit --features=openapi,swagger-ui dev.job.job</code>

(perk-servicetag-service について繰り返し、パッケージ名を適宜調整します)。

ステップ 2: Spring Boot API ゲートウェイを作成する

Spring Initializr ([Spring Initializr へのリンク]) を使用して Spring Boot プロジェクトを生成します。 次の依存関係を含めます: Spring Cloud Gateway、Spring Boot Actuator、Spring Web。

ステップ 3: Swagger を API ゲートウェイに統合する

必要な Springdoc 依存関係を pom.xml (Maven) または build.gradle (Gradle) に追加します。

<code class="language-gradle">dependencies {
    implementation("org.springframework.cloud:spring-cloud-starter-gateway")
    implementation("org.springdoc:springdoc-openapi-starter-webmvc-api:2.8.3")
    implementation("org.springdoc:springdoc-openapi-starter-webflux-ui:2.8.3")
}</code>

Swagger UI を有効にするように application.yml を構成し、各マイクロサービスの Swagger YAML ファイルの URL を指定します。

<code class="language-yaml">springdoc:
  api-docs:
    enabled: true
  swagger-ui:
    enabled: true
    path: /swagger-ui.html
    config-url: /v3/api-docs/swagger-config
    urls:
      - name: Job Service
        url: http://localhost:8081/swagger/job-service-0.0.yml
      - name: Perk Service
        url: http://localhost:8082/swagger/perk-0.0.yml
      - name: Tag Service
        url: http://localhost:8083/swagger/tag-0.0.yml</code>

application.yml:

で API ゲートウェイ ポートを 8080 に設定します。
<code class="language-yaml">server:
  port: 8080
spring:
  application:
    name: web-api-gateway</code>

ステップ 4: アプリケーションを実行する

4 つのアプリケーション (3 つの Micronaut サービスと Spring Boot Gateway) をそれぞれ起動します。 ゲートウェイの Swagger UI には、http://localhost:8080/webjars/swagger-ui/index.html からアクセスできます。

Aggregate Microservices

結論:

この組み合わせアプローチにより、強力で十分に文書化されたマイクロサービス アーキテクチャが提供されます。 Spring Cloud Gateway はリクエストを効率的にルーティングし、Swagger は一元化されたインタラクティブな API ドキュメント エクスペリエンスを提供します。 この設定により、開発者の生産性とコラボレーションが大幅に向上します。必ずプレースホルダー URL をマイクロサービスの Swagger YAML ファイルの実際の URL に置き換えてください。

以上がSpring API Gateway と Micronaut を使用した API ゲートウェイからのマイクロサービスの集約&# Swagger UIの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。