下面是关于“springcloud-gateway集成knife4j的示例详解”的攻略:
1. 准备工作
在Spring Boot项目中添加以下依赖:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-gateway</artifactId>
<version>2.2.2.RELEASE</version>
</dependency>
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-spring-boot-starter</artifactId>
<version>3.0.2</version>
</dependency>
其中,spring-cloud-starter-gateway
是Spring Cloud Gateway的依赖,knife4j-spring-boot-starter
是Knife4j的依赖。
2. 配置Knife4j
在Spring Boot项目的配置文件中,添加以下配置:
server:
port: 8080
servlet:
context-path: /gateway
spring:
application:
name: gateway
cloud:
gateway:
routes:
- id: swagger
uri: lb://swagger
predicates:
- Path=/swagger/**
- id: demo
uri: lb://demo
predicates:
- Path=/demo/**
discovery:
locator:
enabled: true
knife4j:
springmvc:
basePackage: com.example.gatewaydemo.controller
documentation:
title: Gateway接口文档
version: 1.0.0
其中,knife4j.springmvc.basePackage
配置了Knife4j扫描的基础包,knife4j.documentation.title
和knife4j.documentation.version
是接口文档的标题和版本。
3. 添加Route
在Gateway的配置文件中,添加以下路由:
spring:
cloud:
gateway:
routes:
- id: swagger
uri: lb://swagger
predicates:
- Path=/swagger/**
- id: demo
uri: lb://demo
predicates:
- Path=/demo/**
其中,id
是路由的ID,uri
是路由的目标地址,predicates
是指路由的谓词,这里使用Path=/demo/**
表示所有以/demo
开头的请求都会被路由到lb://demo
所代表的服务。
4. 编写Controller
在Spring Boot项目中编写Controller,例如:
@RestController
@RequestMapping("/demo")
@Api(tags = "示例接口")
public class DemoController {
@GetMapping("/hello")
@ApiOperation(value = "Hello示例", notes = "返回Hello字符串")
public String hello() {
return "Hello";
}
}
其中,@Api
是Knife4j的注解,表示接口的基本信息,如标题和描述;@ApiOperation
是Knife4j的注解,表示接口的某个操作的基本信息,如操作名称和描述。
5. 启动服务
在启动服务后,访问网址http://localhost:8080/gateway/doc.html
,即可查看接口文档。
示例1:路由到Swagger
在上述配置中,已经添加了一个路由到Swagger:
- id: swagger
uri: lb://swagger
predicates:
- Path=/swagger/**
这里使用了Path=/swagger/**
表示所有以/swagger
开头的请求都会被路由到lb://swagger
所代表的服务。
示例2:路由到多个服务
可以在Gateway的配置文件中添加多个路由,用于将请求路由到多个服务。
例如,添加以下路由:
spring:
cloud:
gateway:
routes:
- id: demo1
uri: lb://demo1
predicates:
- Path=/demo1/**
- id: demo2
uri: lb://demo2
predicates:
- Path=/demo2/**
其中,id
是路由的ID,uri
是路由的目标地址,predicates
是指路由的谓词。这里添加了两个路由,分别将请求路由到lb://demo1
和lb://demo2
所代表的服务。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:springcloud-gateway集成knife4j的示例详解 - Python技术站