189 8069 5689

springboot2.x集成swagger的方法示例

集成swagger

仪陇网站制作公司哪家好,找创新互联公司!从网页设计、网站建设、微信开发、APP开发、响应式网站设计等网站项目制作,到程序开发,运营维护。创新互联公司自2013年创立以来到现在10年的时间,我们拥有了丰富的建站经验和运维经验,来保证我们的工作的顺利进行。专注于网站建设就选创新互联公司

pom包配置


  io.springfox
  springfox-swagger2
  2.9.2



  io.springfox
  springfox-swagger-ui
  ${swagger.version}

添加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依赖


  com.github.xiaoymin
  swagger-bootstrap-ui
  1.9.3

配置静态访问资源

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

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

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


文章名称:springboot2.x集成swagger的方法示例
当前地址:http://cdxtjz.cn/article/iiiosj.html

其他资讯