POM依赖
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.8.0</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.8.0</version>
</dependency>
配置类
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
@Configuration
@EnableSwagger2
public class Swagger2Config {
@Bean
public Docket api() {
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.select()
.apis(RequestHandlerSelectors.basePackage("com.lou.springboot.controller"))// 修改为自己的 controller 包路径
.paths(PathSelectors.any())
.build();
}
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title("swagger-api文档")
.description("swagger文档 by 13")
.version("1.0")
.build();
}
}
如上代码所示,类上的两个注解含义为:
- @Configuration,启动时加载此类
- @EnableSwagger2,表示此项目启用 Swagger API 文档
api() 方法用于返回实例 Docket(Swagger API 摘要),也是在该方法中指定需要扫描的控制器包路径,只有此路径下的 Controller 类才会自动生成 Swagger API 文档。
apiInfo() 方法中主要是配置一些基础信息,包括配置页面展示的基本信息包括,标题、描述、版本、服务条款、联系方式等。
配置完成之后启动项目,在浏览器中输入网址 /swagger-ui.html,即可看到 Swagger 页面,效果如下:
API注解实例
@ApiOperation(value = "更新用户详细信息", notes = "")
@ApiImplicitParams({
@ApiImplicitParam(name = "id", value = "用户id", required = true, dataTypeClass = Integer.class),
@ApiImplicitParam(name = "user", value = "用户实体user", required = true, dataType = "User")
})
@PutMapping("/users/{id}")
public String putUser(@PathVariable Integer id, @RequestBody User user) {
User tempUser = usersMap.get(id);
tempUser.setName(user.getName());
tempUser.setPassword(user.getPassword());
usersMap.put(id, tempUser);
return "更新成功";
}
Model注解实例
@Data
@ApiModel(parent = Object.class, description = "用户类")
public class User {
@ApiModelProperty(value = "用户ID")
private Integer id;
@ApiModelProperty(value = "用户名")
private String name;
@ApiModelProperty(value = "用户密码")
private String password;
}