Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。
利用SpringFox,我们可以很快的将 Swagger 集成到 Spring Boot 项目中。
Maven 依赖
1 2 3 4 5 6 7 8 9
| <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> </dependency> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger-ui</artifactId> </dependency>
|
启用 Swagger
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88
| @EnableSwagger2 @EnableConfigurationProperties(SwaggerProperties.class) @Configuration public class SwaggerConfig { private final SwaggerProperties swaggerProperties;
public SwaggerConfig(SwaggerProperties swaggerProperties) { this.swaggerProperties = swaggerProperties; }
@Bean public Docket docket() { return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()); }
private ApiInfo apiInfo() { return new ApiInfoBuilder() .title(swaggerProperties.getTitle()) .description(swaggerProperties.getDescription()) .contact(contact()) .version(swaggerProperties.getVersion()) .build(); }
private Contact contact() { return new Contact(swaggerProperties.getContact().getName(), swaggerProperties.getContact().getUrl(), swaggerProperties.getContact().getEmail()); } }
@Data @ConfigurationProperties(prefix = "swagger") public class SwaggerProperties {
private String title;
private String description;
private String version;
private final Contact contact = new Contact();
@Data public static class Contact {
private String name;
private String url;
private String email; } }
@Configuration public class WebMvcConfig extends WebMvcConfigurationSupport {
@Override public void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler("/**").addResourceLocations("classpath:/static/"); registry.addResourceHandler("swagger-ui.html").addResourceLocations("classpath:/META-INF/resources/"); registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/"); super.addResourceHandlers(registry); } }
|
属性配置示例:
1 2 3 4 5 6 7 8
| swagger: title: Spring Boot Samples description: Spring Boot Samples version: 1.0 contact: name: cdrcool url: http://cdrcool.github.io/ email: cdrcool@163.com
|
Swagger 常用注解
- @Api 用于类,说明该类的作用
- @ApiOperation 用于方法,说明方法的用途
- @ApiImplicitParams 用于方法,包含一组参数说明
- @ApiImplicitParam 用于 @ApiImplicitParams 注解中,指定一个参数的配置信息
- @ApiResponses 用于方法,包含一组响应说明
- @ApiResponse 用于 @ApiResponses 中,指定一个响应的配置信息
- @ApiModel 用于类,对类进行说明
- @ApiModelProperty 用于类属性或类方法,对类属性进行说明
访问
应用启动后,访问 http://{ip}:{port}/{projectname}/swagger-ui.html 即可查看自动生成的 API 接口文档,JSON 数据可通过接口 http://{ip}:{port}/{projectname}/v2/api-docs 获取。