SpringBoot整合Swagger的方法示例

 更新时间:2018年10月22日 13:56:07   作者:Chenjiabing  
这篇文章主要介绍了SpringBoot整合Swagger的方法示例,详细介绍了SpringBoot如何整合Swagger以及swagger注解,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

依赖

<dependency>
 <groupId>io.springfox</groupId>
 <artifactId>springfox-swagger2</artifactId>
 <version>2.7.0</version>
</dependency>
<dependency>
 <groupId>io.springfox</groupId>
 <artifactId>springfox-swagger-ui</artifactId>
 <version>2.7.0</version>
</dependency>

配置类

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;

/**
 * Swagger的配置类
 * @author 陈加兵
 *
 */
@Configuration
public class SwaggerConfig{
 /**
 * 创建用户API文档
 * @return
 */
 @Bean
 public Docket createRestUserApi(){
 return new Docket(DocumentationType.SWAGGER_2)
 .groupName("user") 
 .apiInfo(apiInfo()) //api的信息
 .select()
 .apis(RequestHandlerSelectors
  .basePackage("cn.tedu.mycat.controller")) //添加包扫描
 .paths(PathSelectors.any()).build();

 }

 /**
 * 创建API信息
 */
 private ApiInfo apiInfo(){
 return new ApiInfoBuilder()
 .title("api文档的标题") //标题
 .description("api文档的描述") //描述
 .contact( //添加开发者的一些信息
  new Contact("爱撒谎的男孩", "https://chenjiabing666.github.io",
  "18796327106@163.com")).version("1.0").build();
 }

}

启动类

在springBoot的启动类上添加一个注解即可配置成功: @EnableSwagger2

访问api的路径
http://ip/projectName/swagger-ui.html

注解说明

@Api

  • 标注在类上,用来对这个类进行说明的
  • 如果想要生成文档,必须在类或者接口上标注
  • 属性如下:

属性名称 备注 默认值
value url的路径值
tags 如果设置这个值、value的值会被覆盖
description 对api资源的描述
basePath 基本路径可以不配置
position 如果配置多个Api 想改变显示的顺序位置
produces For example, “application/json, application/xml”
consumes For example, “application/json, application/xml”
protocols Possible values: http, https, ws, wss.
authorizations 高级特性认证时配置
hidden 配置为true 将在文档中隐藏

@ApiOperation

  • 用在API方法上,对该API做注释,说明API的作用
  • 不需要多讲,看源码,使用默认的value属性即可,说明该方法的作用
  • 属性如下:

value url的路径值
tags 如果设置这个值、value的值会被覆盖
notes 对api资源的描述
response 返回的对象,在文档中点击Model可以获取该配置的内容
responseContainer 这些对象是有效的 “List”, “Set” or “Map”.,其他无效
responseReference 可以不配置
httpMethod 可以接受 “GET”, “HEAD”, “POST”, “PUT”, “DELETE”, “OPTIONS” and “PATCH”
position 如果配置多个Api 想改变显示的顺序位置
produces 同 Api中的定义
consumes 同 Api中的定义
protocols 同 Api中的定义
authorizations 同 Api中的定义
hidden 是否隐藏,true 或者false ,这个可以隐藏后台接口
code http的状态码 默认 200
extensions 扩展属性

@ApiImplicitParams

  • 用来包含API的一组参数注解,可以简单的理解为参数注解的集合声明
  • 很重要,这个注解其中包含接口入参的详细说明
  • 内容是集合

@ApiImplicitParam

用在 @ApiImplicitParams 注解中,也可以单独使用,说明一个请求参数的各个方面

详细的属性使用说明如下:

  • name :属性的字段名称,相当于form表单中的name,这个就是入参的字段
  • dataType :参数的类型,标识,字符串
  • value :该参数的描述
  • required :是否必填,布尔值
  • defaultValue :缺省值,会在文档中缺省填入,这样更方面造数据,不需要调用接口的去填值了
  • paramType :指定参数的入参数方式(也就是请求参数的位置),其中有四种常用的,如下:
    • query
    • path
    • body
    • form

paramType属性的详细说明

  • query :必须要和入参的字段一样,也可以使用 @RequestParam() 指定
  • path :用于Restful的风格的url,请求的参数写在路径上,如下:
@ApiOperation(value="根据用户Id获取用户信息",response=User.class,hidden=false)
 @ApiImplicitParams({
 @ApiImplicitParam(paramType = "path", name = "id", dataType="Integer", required = false, value = "用户的id", defaultValue = "1")
 })
 @GetMapping("/user/get/{id}")
 public Object getUser(@PathVariable("id")Integer id){
 return new User(id, "陈加兵");
 }
  • body:以流的形式提交 仅支持POST
    form:以表单的形式提交

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

相关文章

  • Java中如何比较两个数组中元素是否相同

    Java中如何比较两个数组中元素是否相同

    比较两个数组中的元素是否相同,在项目中经常会使用到,下面与大家分享个最简单的方法
    2014-06-06
  • spring项目中切面及AOP的使用方法

    spring项目中切面及AOP的使用方法

    我们知道,spring两大核心,IOC(控制反转)和AOP(切面),那为什么要使用AOP,AOP是什么呢?带着这些问题通过本文学习下吧
    2021-06-06
  • Java定义画板类的方法

    Java定义画板类的方法

    这篇文章主要为大家详细介绍了Java定义画板类的方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-06-06
  • 使用java API实现zip递归压缩和解压文件夹

    使用java API实现zip递归压缩和解压文件夹

    这篇文章主要介绍了使用java API实现zip递归压缩文件夹及解压,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-08-08
  • Java使用Freemarker页面静态化生成的实现

    Java使用Freemarker页面静态化生成的实现

    这篇文章主要介绍了Java使用Freemarker页面静态化生成的实现,页面静态化是将原来的动态网页改为通过静态化技术生成的静态网页,FreeMarker 是一个用 Java 语言编写的模板引擎,它基于模板来生成文本输,更多相关内容需要的小伙伴可以参考一下
    2022-06-06
  • Spring-boot 2.3.x源码基于Gradle编译过程详解

    Spring-boot 2.3.x源码基于Gradle编译过程详解

    这篇文章主要介绍了Spring-boot 2.3.x源码基于Gradle编译过程详解,本文通过实例图文相结合给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-12-12
  • Java 类加载过程与类加载器详细介绍

    Java 类加载过程与类加载器详细介绍

    这篇文章主要介绍了Java 类加载过程与类加载器详细介绍,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的朋友可以参考一下
    2022-07-07
  • 关于Java虚拟机HotSpot

    关于Java虚拟机HotSpot

    这篇文章主要介绍了关于Java虚拟机HotSpot,在Java类中的一些方法会被由C/C++编写的HotSpot虚拟机的C/C++函数调用,不过由于Java方法与C/C++函数的调用约定不同,所以并不能直接调用,需要JavaCalls::call()这个函数辅助调用,下面我们来看看文章对内容的具体介绍
    2021-11-11
  • java UDP实现一个聊天工具的示例代码

    java UDP实现一个聊天工具的示例代码

    这篇文章主要介绍了java UDP实现一个聊天工具的示例代码,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-01-01
  • Java数组扩容实例代码

    Java数组扩容实例代码

    这篇文章主要介绍了Java数组扩容实例代码,具有一定借鉴价值,需要的朋友可以参考下
    2017-11-11

最新评论