springboot2.x集成swagger的方法示例
集成swagger
pom包配置
<dependency> <groupid>io.springfox</groupid> <artifactid>springfox-swagger2</artifactid> <version>2.9.2</version> </dependency> <!-- swagger-ui --> <dependency> <groupid>io.springfox</groupid> <artifactid>springfox-swagger-ui</artifactid> <version>${swagger.version}</version> </dependency>
添加swagger配置文件
@configuration @enableswagger2 public class swaggerconfig { /** * 创建一个docket对象 * 调用select()方法, * 生成apiselectorbuilder对象实例,该对象负责定义外漏的api入口 * 通过使用requesthandlerselectors和pathselectors来提供predicate,在此我们使用any()方法,将所有api都通过swagger进行文档管理 * @return */ @bean public docket createrestapi() { return new docket(documentationtype.swagger_2) .apiinfo(apiinfo()) .select() .apis(requesthandlerselectors.any()) .paths(pathselectors.any()) .build(); } private apiinfo apiinfo() { return new apiinfobuilder() //标题 .title("spring boot中使用swagger2构建restful apis") //简介 .description("") //服务条款 .termsofserviceurl("") //作者个人信息 .contact(new contact("chenguoyu","","chenguoyu_sir@163.com")) //版本 .version("1.0") .build(); } }
如果不想将所有的接口都通过swagger管理的话,可以将requesthandlerselectors.any()
修改为requesthandlerselectors.basepackage()
配置静态访问资源
@configuration public class webmvcconfig implements webmvcconfigurer { @override public void addresourcehandlers(resourcehandlerregistry registry) { // 解决 swagger-ui.html 404报错 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依赖
<dependency> <groupid>com.github.xiaoymin</groupid> <artifactid>swagger-bootstrap-ui</artifactid> <version>1.9.3</version> </dependency>
配置静态访问资源
@configuration public class webmvcconfig implements webmvcconfigurer { @override public void addresourcehandlers(resourcehandlerregistry registry) { // 解决 swagger-ui.html 404报错 registry.addresourcehandler("/swagger-ui.html").addresourcelocations("classpath:/meta-inf/resources/"); // 解决 doc.html 404 报错 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中会显示为文本框而不是上传按钮
如果需要项目代码,可以去我的中下载;具体代码可以查看目录
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。