Swagger
主要用于生成API
文档,本文演示了如何使用目前最新的OpenAPI3
以及Swagger
来进行接口文档的生成。html
<dependency> <groupId>org.springdoc</groupId> <artifactId>springdoc-openapi-ui</artifactId> <version>1.4.7</version> </dependency>
Gradle
:java
implementation( "org.springdoc:springdoc-openapi-ui:1.4.7")
Swagger
的配置很简单,仅须要一个@OpenAPIDefinition
便可,@OpenAPIDefinition
用于描述全局的配置信息,参考配置以下:git
info
表示基本信息,好比标题,版本,描述等externalDocs
是参考文档servers
是服务器地址@OpenAPIDefinition(info = @Info(title = "标题",version = "版本",description = "描述"), externalDocs = @ExternalDocumentation(description = "参考文档",url = "https://www.baidu.com"), servers = @Server(url = "http://localhost:8080")) public class SwaggerConfig { }
接着在配置文件写上文档路径:github
springdoc: api-docs: path: /doc
运行后直接访问spring
localhost:8080/swagger-ui/index.html/
会出现以下界面:api
搜索栏中输入配置文件中的路径/doc
搜索便可:bash
或者直接访问:服务器
http://localhost:8080/swagger-ui/index.html?url=/doc
下一步就是添加具体的接口,先来看一个简单的例子:app
@RestController @Tag(name = "测试Controller") @RequestMapping("/") public class TestController { @GetMapping("test") @Operation(description = "测试接口",tags = "测试Controller") public String test() { return "success"; } }
运行后能够看到多了一个接口,也就是@Tag
与@Operation
起做用了,注解说明以下:测试
@Tag
表示标签,name
指定标签的值,也能够加上description
等属性@Operation
做用在方法上,能够指定描述以及标签,也能够指定参数以及返回值等信息相似的注解还有不少,好比:
@Parameter
:指定参数属性,好比description
、name
等@ApiResponse
:指定返回值,经常使用的属性有responseCode
以及description
@Schema
:用在实体类上以及实体类字段上,在接口上能够显示对应的值下面是一个接口控制器的完整示例:
@RestController @Tag(name = "测试Controller") @RequestMapping("/") public class TestController { @GetMapping("test") @Operation(description = "测试接口",tags = {"测试Controller","测试"}) public String test() { return "success"; } @GetMapping("test2") @Operation(description = "这个也是测试接口",tags = {"测试Controller","2号测试接口"}) @Parameter(description = "必要参数",name = "parm") public String test2(@RequestParam String parm) { return "须要参数"; } @GetMapping("test3") @Operation(description = "带有返回状态的接口",tags = {"测试Controller"}) @ApiResponse(responseCode = "111",description = "测试成功") @ApiResponse(responseCode = "222",description = "测试失败") public void test3(@RequestBody String body) { } @GetMapping("test4") @Operation(description = "User接口",tags = {"测试Controller"}) @ApiResponse(responseCode = "100",description = "添加成功") public void test4(@RequestBody User user) { } }
实体类:
@Getter @Schema(description = "用户") public class User { @Schema(description = "用户名") private String name; @Schema(description = "主键") private String id; }
效果如图:
Java
版:
Kotlin
版: