Swagger是一个开源的API文档工具,可以自动生成API文档,并提供在线调试功能。在Spring Boot中集成Swagger,可以方便地生成和查看API文档。以下是实现步骤:
- 添加Swagger依赖
在pom.xml
文件中添加以下依赖项:
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.9.2</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.9.2</version>
</dependency>
2.配置Swagger
在 Spring Boot 中配置Swagger需要创建一个名为SwaggerConfig
的类,并使用@EnableSwagger2
注解启用Swagger。
@Configuration
@EnableSwagger2
public class SwaggerConfig {
@Bean
public Docket api() {
return new Docket(DocumentationType.SWAGGER_2)
.select()
.apis(RequestHandlerSelectors.basePackage("com.example.demo.controller"))
.paths(PathSelectors.any())
.build();
}
}
这里通过basePackage()
方法设置扫描的控制器包路径,通过PathSelectors.any()
来指定任何路径都会被包含在API文档中。
3.访问Swagger UI
在项目启动后,访问http://localhost:8080/swagger-ui.html
即可打开Swagger UI界面,显示API文档。
注意:如果你没有修改端口号,可以直接访问http://localhost:8080/swagger-ui.html
。
4.配置API文档信息
Swagger UI界面上会显示API文档的基本信息,例如标题、描述和版本等。我们可以通过以下方式来配置这些信息:
@Configuration
@EnableSwagger2
public class SwaggerConfig {
@Bean
public Docket api() {
return new Docket(DocumentationType.SWAGGER_2)
.select()
.apis(RequestHandlerSelectors.basePackage("com.example.demo.controller"))
.paths(PathSelectors.any())
.build()
.apiInfo(apiInfo());
}
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title("Spring Boot Demo API")
.description("This is a demo API for Spring Boot.")
.version("1.0.0")
.build();
}
}
在apiInfo()
方法中设置API文档的标题、描述和版本号等信息,这些信息将会在Swagger UI界面上显示。
5.添加Swagger注解
在控制器类和方法上添加Swagger注解可以更加详细地描述API接口,例如请求参数和响应格式等。以下是一些常用的Swagger注解:
@Api
:用于描述API接口。@ApiOperation
:用于描述API接口中某个具体方法的信息。@ApiParam
:用于描述方法中的请求参数。@ApiResponse
:用于描述方法的响应结果。@ApiModel
:用于描述返回结果对象的信息。@ApiModelProperty
:用于描述返回结果对象中的属性信息。
@RestController
@RequestMapping("/api")
@Api(tags = "用户管理相关接口")
public class UserController {
@GetMapping("/{id}")
@ApiOperation("获取用户信息")
@ApiImplicitParam(name = "id", value = "用户ID", required = true)
@ApiResponse(code = 200, message = "操作成功", response = User.class)
public User getUser(@PathVariable Long id) {
return userService.getUserById(id);
}
}