springboot2.x集成swagger的方法示例
集成swagger
pom包配置
io.springfox springfox-swagger2 2.9.2 io.springfox springfox-swagger-ui ${swagger.version}
添加Swagger配置文件
@Configuration
@EnableSwagger2
publicclassSwaggerConfig{
/**
*创建一个Docket对象
*调用select()方法,
*生成ApiSelectorBuilder对象实例,该对象负责定义外漏的API入口
*通过使用RequestHandlerSelectors和PathSelectors来提供Predicate,在此我们使用any()方法,将所有API都通过Swagger进行文档管理
*@return
*/
@Bean
publicDocketcreateRestApi(){
returnnewDocket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.select()
.apis(RequestHandlerSelectors.any())
.paths(PathSelectors.any())
.build();
}
privateApiInfoapiInfo(){
returnnewApiInfoBuilder()
//标题
.title("SpringBoot中使用Swagger2构建RESTfulAPIs")
//简介
.description("")
//服务条款
.termsOfServiceUrl("")
//作者个人信息
.contact(newContact("chenguoyu","","chenguoyu_sir@163.com"))
//版本
.version("1.0")
.build();
}
}
如果不想将所有的接口都通过swagger管理的话,可以将RequestHandlerSelectors.any()修改为RequestHandlerSelectors.basePackage()
配置静态访问资源
@Configuration
publicclassWebMvcConfigimplementsWebMvcConfigurer{
@Override
publicvoidaddResourceHandlers(ResourceHandlerRegistryregistry){
//解决swagger-ui.html404报错
registry.addResourceHandler("/swagger-ui.html").addResourceLocations("classpath:/META-INF/resources/");
}
}
到这里为止swagger就已经配置完了,可以启动项目,然后访问如下链接即可http://localhost:9000/swagger...
端口号applicationContext中设置的端口号。
集成swagger-bootstrap-ui
由于个人感觉原生的swagger-ui不太好看,网上提供了swagger-bootstrap-ui。
pom依赖
com.github.xiaoymin swagger-bootstrap-ui 1.9.3
配置静态访问资源
@Configuration
publicclassWebMvcConfigimplementsWebMvcConfigurer{
@Override
publicvoidaddResourceHandlers(ResourceHandlerRegistryregistry){
//解决swagger-ui.html404报错
registry.addResourceHandler("/swagger-ui.html").addResourceLocations("classpath:/META-INF/resources/");
//解决doc.html404报错
registry.addResourceHandler("/doc.html").addResourceLocations("classpath:/META-INF/resources/");
}
}
这时只需要访问以下链接即可http://localhost:9000/doc.html
swagger常用注解
@Api:用在类上,标志此类是Swagger资源
| 属性名称 | 备注 |
|---|---|
| value | 该参数没什么意义,在UI界面上不显示,所以不用配置 |
| tags | 说明该类的作用,参数是个数组,可以填多个 |
| description | 对api资源的描述 |
@ApiOperation:用在方法上,描述方法的作用
| 属性名称 | 备注 |
|---|---|
| value | 方法的用途和作用 |
| tags | 方法的标签,可以设置多个值 |
| notes | 方法的注意事项和备注 |
| response | 返回的类型(尽量不写,由swagger扫描生成) |
@ApiImplicitParams:包装器:包含多个ApiImplicitParam对象列表
| 属性名称 | 备注 |
|---|---|
| value | 多个ApiImplicitParam配置 |
@ApiParam:用于Controller中方法的参数说明
| 属性名称 | 备注 |
|---|---|
| name | 属性名称 |
| value | 属性值 |
| defaultValue | 默认属性值 |
| allowableValues | 可以不配置 |
| required | 是否属性必填 |
| allowMultiple | 文件上传时,是否允许多文件上传 |
@ApiImplicitParam:定义在@ApiImplicitParams注解中,定义单个参数详细信息,如果只有一个参数,也可以定义在方法上
| 属性名称 | 备注 |
|---|---|
| name | 参数名 |
| value | 参数说明 |
| dataType | 参数类型 |
| paramType | 表示参数放在哪里 header:请求参数的获取:@RequestHeader query:请求参数的获取:@RequestParam path:请求参数的获取:@PathVariable body:不常用 form:不常用 |
| defaultValue | 参数的默认值 |
| required | 参数是否必须传 |
@ApiModel:用在类上,表示对类进行说明,用于实体类中的参数接收说明
| 属性名称 | 备注 |
|---|---|
| value | 默认为类的名称 |
| description | 对该类的描述 |
@ApiModelProperty:在model类的属性添加属性说明
| 属性名称 | 备注 |
|---|---|
| value | 属性描述 |
| name | 属性名称 |
| allowableValues | 参数允许的值 |
| dataType | 数据类型 |
| required | 是否必填 |
@ApiResponses:包装器:包含多个ApiResponse对象列表
| 属性名称 | 备注 |
|---|---|
| value | 多个ApiResponse配置 |
@ApiResponse:定义在@ApiResponses注解中,一般用于描述一个错误的响应信息
| 属性名称 | 备注 |
|---|---|
| code | 响应码 |
| message | 状态码对应的响应信息 |
| response | 默认响应类Void |
| responseContainer | 参考ApiOperation中配置 |
@ApiIgnore():用于类或者方法上,不被显示在页面上
总结
除上面之外有点值得注意的是,如果是上传文件的话,需要把@ApiImplicitParam中的dataType属性配置为__File否则在swagger中会显示为文本框而不是上传按钮
如果需要项目代码,可以去我的github中下载;具体代码可以查看swagger目录
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。