欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

springboot2.x集成swagger的方法示例

程序员文章站 2024-02-23 14:36:34
集成swagger pom包配置 io.springfox

集成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中会显示为文本框而不是上传按钮

如果需要项目代码,可以去我的中下载;具体代码可以查看目录

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。