Spring Boot配置Swagger的实现代码

 更新时间:2018年12月23日 16:23:09   作者:hrabbits  
这篇文章主要介绍了Spring Boot配置Swagger的实现代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

由于Spring Boot能够快速开发、便捷部署等特性,相信有很大一部分Spring Boot的用户会用来构建RESTful API。而我们构建RESTful API的目的通常都是由于多终端的原因,这些终端会共用很多底层业务逻辑,因此我们会抽象出这样一层来同时服务于多个移动端或者Web前端。

Swagger Inspector:测试API和生成OpenAPI的开发工具。Swagger Inspector的建立是为了解决开发者的三个主要目标。

  • 执行简单的API测试
  • 生成OpenAPI文档
  • 探索新的API功能

下面来具体介绍,如果在Spring Boot中使用Swagger2。

添加Swagger2依赖

在pom.xml中加入Swagger2的依赖

 <!-- Swagger API-->
    <dependency>
      <groupId>io.springfox</groupId>
      <artifactId>springfox-swagger2</artifactId>
      <version>2.2.2</version>
    </dependency>
    <dependency>
      <groupId>io.springfox</groupId>
      <artifactId>springfox-swagger-ui</artifactId>
      <version>2.2.2</version>
    </dependency>

创建Swagger2配置类

在HrabbitAdminApplication.java子包下创建Swagger2的配置类Swagger2。

通过@Configuration注解,让Spring来加载该类配置。再通过@EnableSwagger2注解来启用Swagger2。

再通过createRestApi函数创建Docket的Bean之后,apiInfo()用来创建该Api的基本信息(这些基本信息会展现在文档页面中)。select()函数返回一个ApiSelectorBuilder实例用来控制哪些接口暴露给Swagger来展现,包含注解的方式来确定要显示的接口,当然也可以通过包扫描的方式来确定要显示的包的接口。

/**
 * 配置Swagger
 *
 * @Auther: hrabbit
 * @Date: 2018-12-17 6:43 PM
 * @Description:
 */
@Configuration
@EnableSwagger2
public class SwaggerConfig {

  @Bean
  public Docket createRestApi() {
    return new Docket(DocumentationType.SWAGGER_2)
        .apiInfo(apiInfo())
        .select()
        .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))             //这里采用包含注解的方式来确定要显示的接口
        //.apis(RequestHandlerSelectors.basePackage("com.hrabbit.admin.modual.system.controller"))  //这里采用包扫描的方式来确定要显示的接口
        .paths(PathSelectors.any())
        .build();
  }

  private ApiInfo apiInfo() {
    return new ApiInfoBuilder()
        .title("Hrabbit-Admin Doc")
        .description("Guns Api文档")
        .termsOfServiceUrl("https://gitee.com/hrabbit/hrabbit-admin")
        .contact("hrabbit")
        .version("1.0")
        .build();
  }

}

添加文档内容

我们通过@Api说明Controller,@ApiOperation注解来给API增加说明、通过@ApiImplicitParams、@ApiImplicitParam注解来给参数增加说明。

/**
 * 系统用户
 *
 * @Auther: hrabbit
 * @Date: 2018-12-17 6:21 PM
 * @Description:
 */
@Controller
@RequestMapping("user")
@Api(value = "系统用户")
public class SysUserController {

  @Autowired
  private SysUserService sysUserService;

  /**
   * 根据id获取用户信息
   *
   * @return
   */
  @RequestMapping("/",method = RequestMethod.GET)
  @ResponseBody
  @ApiOperation(value = "进入到主页")
  public Object index() {
    return sysUserService.selectById(1L);
  }

  /**
   * 创建用户信息
   *
   * @param user
   * @return
   */
  @ApiOperation(value = "创建用户", notes = "根据SysUser对象创建用户")
  @ApiImplicitParam(name = "user", value = "用户详细实体user", required = true, dataType = "SysUser")
  @RequestMapping(value = "", method = RequestMethod.POST)
  public String postUser(@RequestBody SysUser user) {
    return "success";
  }

  /**
   * 修改用户信息
   *
   * @param id
   * @param user
   * @return
   */
  @ApiOperation(value = "更新用户详细信息", notes = "根据id更新系统用户")
  @ApiImplicitParams({
      @ApiImplicitParam(name = "id", value = "用户ID", required = true, dataType = "Long"),
      @ApiImplicitParam(name = "user", value = "用户详细实体sysUser", required = true, dataType = "SysUser")
  })
  @RequestMapping(value = "/{id}", method = RequestMethod.PUT)
  public String putUser(@PathVariable Long id, @RequestBody SysUser user) {
    return "success";
  }

}

完成上述代码添加上,启动Spring Boot程序,访问:http://localhost:8080/swagger-ui.html
。就能看到前文所展示的RESTful API的页面。我们可以再点开具体的API请求,以POST类型的/user请求为例,可找到上述代码中我们配置的Notes信息以及参数user的描述信息,如下图所示。

API文档访问与调试

在上图请求的页面中,我们看到user的Value是个输入框?是的,Swagger除了查看接口功能外,还提供了调试测试功能,我们可以点击上图中右侧的Model Schema(黄色区域:它指明了User的数据结构),此时Value中就有了user对象的模板,我们只需要稍适修改,点击下方“Try it out!”按钮,即可完成了一次请求调用!

本篇文章,一些文字内容借鉴了程序猿DD的Swagger内容,该系列文章内容主要以如何搭建一个完整的后台Spirng Boot Cli为主,其他的基础信息可以参考其他博主内容!

码云地址:https://gitee.com/hrabbit/hrabbit-admin

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

相关文章

  • Java中Scanner类与BufferReader类的不同点(非常详细)

    Java中Scanner类与BufferReader类的不同点(非常详细)

    这篇文章主要介绍了Java中Scanner类与BufferReader类的不同点(非常详细)的相关资料,需要的朋友可以参考下
    2016-08-08
  • 浅谈Java响应式系统

    浅谈Java响应式系统

    第一次听到reactive这个词还是在几年前,偶然了解到了Rxjava这个项目,仿佛为我打开了一扇新的大门,Rxjava是ReactiveX的java实现,ReactiveX家族除了Rxjava还有RxJS, Rx.NET,RxScala等等。
    2021-06-06
  • Java流处理stream使用详解

    Java流处理stream使用详解

    Java8的另一大亮点Stream,它与java.io包里的InputStream和OutputStream是完全不同的概念,下面这篇文章主要给大家介绍了关于Java8中Stream详细使用方法的相关资料,需要的朋友可以参考下
    2022-10-10
  • ThreadLocal常用方法、使用场景及注意事项说明

    ThreadLocal常用方法、使用场景及注意事项说明

    这篇文章主要介绍了ThreadLocal常用方法、使用场景及注意事项说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-10-10
  • 基于sharding-jdbc的使用限制

    基于sharding-jdbc的使用限制

    这篇文章主要介绍了sharding-jdbc的使用限制,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-10-10
  • java PDF添加图层的方法 支持多页图层添加

    java PDF添加图层的方法 支持多页图层添加

    这篇文章主要为大家详细介绍了java PDF添加图层的方法,支持多页图层添加,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-02-02
  • Ribbon负载均衡算法原理与使用介绍

    Ribbon负载均衡算法原理与使用介绍

    在微服务中,对服务进行拆分之后,必然会带来微服务之间的通信需求,而每个微服务为了保证高可用性,又会去部署集群,那么面对一个集群微服务进行通信的时候,如何进行负载均衡也是必然需要考虑的问题
    2022-09-09
  • 详解Mybatis多参数传递入参四种处理方式

    详解Mybatis多参数传递入参四种处理方式

    这篇文章主要介绍了详解Mybatis多参数传递入参四种处理方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-04-04
  • Java中的值传递和引用传递实例介绍

    Java中的值传递和引用传递实例介绍

    java 中没有引用传递,都是值传递的,可以通过传递副本修改对象的,副本交换,并不影响原引用
    2013-09-09
  • Java实现显示指定类型的文件

    Java实现显示指定类型的文件

    这篇文章主要介绍了Java实现显示指定类型的文件,需要的朋友可以参考下
    2014-03-03

最新评论