使用Springdoc OpenAPI替代SpringFox提供微服務API文件 – Piotr
通常情況下,用專案SpringFox來為Spring Boot應用程式自動生成Swagger文件,Springdoc OpenAPI與OpenAPI 3相容,並支援Spring WebFlux,而SpringFox不是這樣。因此,似乎選擇是顯而易見的,尤其是在使用反應性API或Spring Cloud Gateway的情況下。在本文中,我向您展示瞭如何在具有閘道器模式的微服務架構中使用Springdoc。
作為本文中的程式碼示例,我們將使用由Spring Cloud構建的典型微服務架構。它由Spring Cloud Config Server,Eureka發現和Spring Cloud Gateway作為API閘道器組成。我們還有三個微服務,它們公開了REST API,並且是外部客戶端的隱藏閘道器。他們每個人都公開OpenAPI文件,可以使用Swagger UI在閘道器上訪問。帶有原始碼的儲存庫可在GitHub上找到:https : //github.com/piomin/sample-spring-microservices-new.git。該儲存庫已在其他文章中用作示例,因此它不僅包含Springdoc庫演示的程式碼。
與Swagger相容遷移
與Springdoc OpenAPI庫有關的第一個好訊息是,它可以與SpringFox庫一起存在,而不會發生任何衝突。如果有人使用Swagger文件,例如,用於合同測試的程式碼生成,則這可以簡化向新工具的遷移。要為基於Spring MVC的標準應用程式啟用Springdoc,您需要在Maven中包括以下依賴項pom.xml:
<dependency> <groupId>org.springdoc</groupId> <artifactId>springdoc-openapi-webmvc-core</artifactId> <version>1.2.32</version> </dependency> |
我們的每個Spring Boot微服務都建立在Spring MVC之上,並提供用於標準同步REST通訊的端點。但是,基於Spring Cloud Gateway頂部構建的API閘道器使用Netty作為嵌入式伺服器,並且基於反應式Spring WebFlux。它還提供Swagger UI來訪問所有微服務公開的文件,因此它必須包括啟用UI的庫。必須包含以下兩個庫,以使Springdoc支援基於Spring WebFlux的反應式應用程式。
<dependency> <groupId>org.springdoc</groupId> <artifactId>springdoc-openapi-webflux-core</artifactId> <version>1.2.31</version> </dependency> <dependency> <groupId>org.springdoc</groupId> <artifactId>springdoc-openapi-webflux-ui</artifactId> <version>1.2.31</version> </dependency> |
我們使用@OpenAPIDefinition註釋來定義Swagger網站上顯示的應用程式的描述。如您所見,我們仍然可以透過啟用SpringFox @EnableSwagger2:
@SpringBootApplication @EnableDiscoveryClient @EnableSwagger2 @OpenAPIDefinition(info = @Info(title = "Employee API", version = "1.0", description = "Documentation Employee API v1.0") ) public class EmployeeApplication { public static void main(String[] args) { SpringApplication.run(EmployeeApplication.class, args); } } |
一旦啟動每個微服務,它將公開端點/v3/api-docs。我們可以透過使用springdoc.api-docs.pathSpring配置檔案中的屬性來自定義該上下文。
更多細節點選標題見原文。
相關文章
- Springfox與SpringDoc——swagger如何選擇(SpringDoc入門)SpringSwagger
- 擁抱 OpenAPI 3:springdoc-openapi 食用指南APISpring
- 使用Kafka Streams和Spring Boot微服務中的分散式事務 - PiotrKafkaSpring Boot微服務分散式
- 使用Spring Boot和GraalVM在Knative上構建微服務 - piotrSpring BootLVM微服務
- 微服務如何聚合 API 文件?這波秀~微服務API
- 神器 SpringDoc 橫空出世!最適合 SpringBoot 的API文件工具來了!Spring BootAPI
- 使用 caddy 作為微服務的 API gateway微服務APIGateway
- 微服務--API版本控制微服務API
- Lumen 微服務生成 Swagger 文件微服務Swagger
- SpringBoot3整合SpringDoc實現線上介面文件Spring Boot
- 微服務雲架構-Swagger2構建強大的RESTful API文件微服務架構SwaggerRESTAPI
- Ocelot中文文件-微服務ServiceFabric微服務
- API文件使用方法API
- 使用apidoc文件神器,快速生成api文件API
- 使用 OAuth 2 和 JWT 為微服務提供安全保障 – 基本概念OAuthJWT微服務
- 如何使用Kubernetes Cluster API和ArgoCD建立和管理多個Kubernetes叢集 - PiotrAPIGo
- 微服務實戰SpringCloud之Spring Cloud Feign替代HTTP Client微服務SpringGCCloudHTTPclient
- SpringCloud微服務實戰——搭建企業級開發框架(十九):Gateway使用knife4j聚合微服務文件SpringGCCloud微服務框架Gateway
- go-kit微服務:API監控Go微服務API
- Knife4j輕鬆聚合雲端OpenAPI文件API
- Go-kratos 框架商城微服務實戰之使用者服務API (五)Go框架微服務API
- 使用swoole提供http服務HTTP
- API文件API
- 使用 YApi 管理 API 文件,測試, mockAPIMock
- Bootstrap提供的CDN服務標籤與下載文件boot
- Java微服務:用Spark替代SpringBoot才是正確的方式 - Christian LusardiJava微服務SparkSpring Boot
- 企業分散式微服務雲SpringCloud SpringBoot mybatis -服務提供與呼叫分散式微服務GCCloudSpring BootMyBatis
- ASP.NET Web API 中使用 swagger 來管理 API 文件ASP.NETWebAPISwagger
- 使用YQL(Google Feed API替代方案)顯示RSS源(2)GoAPI
- ABP微服務系列學習-使用Tye啟動微服務微服務
- 使用API閘道器幫助單體到微服務的平滑過渡API微服務
- 微服務實踐分享(2)api閘道器微服務API
- 微服務基礎——厲害了!API閘道器微服務API
- go微服務系列(四) - http api中引入protobufGo微服務HTTPAPI
- 通過Spring Boot,Spring Cloud Gateway構建基於Consul叢集的微服務案例演示 – Piotr的TechBlogSpring BootCloudGateway微服務
- 透過Spring Boot,Spring Cloud Gateway構建基於Consul叢集的微服務案例演示 – Piotr的TechBlogSpring BootCloudGateway微服務
- knife4j api文件使用說明API
- .Net Api 之如何使用Elasticsearch儲存文件APIElasticsearch