更多关于knife4j的详细介绍请参考官方文档
更轻量级的OpenAPI文档聚合方案可以考虑Knife4j推出的Aggregation或者Desktop组件
本篇博客主要讲解通过knife4j项目如何集成Spring Cloud Gateway网关,通过网关聚合所有的Swagger微服务文档
源码地址请参考:knife4j-spring-cloud-gateway
整体项目结构如下:
|-knife4j-spring-cloud-gateway
|-----service-doc //文档聚合中心,是所有微服务文档的出口
|-----service-order //订单服务,包含所有与订单业务模块相关的接口
|-----service-server //eureka 注册中心
|-----service-user //用户服务,包含所有的用户接口
eureka注册中心
注册中心几乎没有代码,只是在pom.xml文件中引入了eureka服务的jar包
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
项目的application.yml
配置文件如下:
server:
port: 10000
eureka:
instance:
hostname: localhost
client:
register-with-eureka: false
fetch-registry: false
service-url:
defaultZone: http://${
eureka.instance.hostname}:${
server.port}/eureka/
spring:
application:
name: knife4j-gateway-server
定义注册中心访问地址,端口号等属性
最后通过注解@EnableEurekaServer
来启用注册中心
@EnableEurekaServer
@SpringBootApplication
public class ServiceServerApplication {
}
服务接口(订单order & 用户User)
由于服务接口订单和用户两个模块其实属性是差不多,只是接口不一样,因此就随便挑一个服务的配置来说吧
service-user:用户服务的接口
每个微服务只需要引入和swagger相关的后端jar包即可,不需要引入swagger的前端Ui包,knife4j为我们提供了微服务项的starter,供开发者使用
当然,作为子服务,还需要引入eureka-client的jar包,所以,pom.xml文件相关配置如下:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-micro-spring-boot-starter</artifactId>
</dependency>
项目的jar包引入完成后,接下来是配置swagger的相关配置,SwaggerConfiguration.java
配置如下:
@Configuration
@EnableSwagger2
@EnableSwaggerBootstrapUi
@Import(BeanValidatorPluginsConfiguration.class)
public class SwaggerConfiguration {
@Bean(value = "userApi")
@Order(value =