本指南演示了将 Swagger 3 (OpenAPI) 与 Spring Cloud Gateway 集成以简化微服务 API 文档。 我们将利用 Java 21、Spring Boot 3.2 和 Micronaut 来创建强大且用户友好的解决方案。
为什么选择 Swagger/OpenAPI?
Swagger,现在的 OpenAPI 规范 (OAS),是领先的 API 文档标准。它的好处包括:
Spring Cloud Gateway:基础
Spring Cloud Gateway 基于 Spring Framework 5、Spring Boot 2 和 Project Reactor 构建,充当将请求路由和过滤到微服务的中心入口点。
Spring Cloud Gateway 的功能:
下图说明了 Spring Cloud Gateway 的操作:
根据定义的路由评估客户端请求。 匹配的请求由网关 Web 处理程序处理,在请求代理之前和之后执行前置和后置过滤器。
构建应用程序:
先决条件:
逐步实施:
第 1 步:创建 Micronaut 应用程序(工作、Perk、标签服务)
使用 Micronaut Launcher([链接到启动器])创建三个 Micronaut 应用程序:job-service
、perk-service
和 tag-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-service
和 tag-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>
配置 application.yml
以启用 Swagger UI 并指定每个微服务的 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 步:运行应用程序
启动四个应用程序(三个 Micronaut 服务和 Spring Boot Gateway)。 网关的 Swagger UI 可通过 http://localhost:8080/webjars/swagger-ui/index.html
访问。
结论:
这种组合方法提供了强大且文档齐全的微服务架构。 Spring Cloud Gateway 有效地路由请求,而 Swagger 则提供集中式交互式 API 文档体验。 此设置显着提高了开发人员的工作效率和协作能力。请记住将占位符 URL 替换为微服务 Swagger YAML 文件的实际 URL。
以上是使用 Spring API Gateway 和 Micronaut 从 API 网关聚合微服务和 Swagger UI的详细内容。更多信息请关注PHP中文网其他相关文章!