每次修改完代码需要找原本的API时楼主的内心是痛苦的,因为一般情况下都找不到,需要重新写一份。如果使用Swagger的话,只要加几个注解就可以实时生成最新的在线API文档,而且不仅仅是文档,同时支持API接口的测试。下面呢,给大家分享一下Spring Boot 集成 Swagger 的步骤。

一、引入jar包

      <!-- Swagger2核心包-->
<!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger2 -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.7.0</version>
</dependency> <!-- Swagger2 UI包,前端展示API文档 -->
<!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger-ui -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.7.0</version>
</dependency>

二、配置SwaggerConfig

 package com.bjgoodwill.oip.major.config;

 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.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2; /**
* @Description: swagger配置文件
* @Date 2018/7/13 10:50
* @Author HQueen
*/
@Configuration
@EnableSwagger2
public class SwaggerConfig {
@Bean
public Docket api() {
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.select()
.apis(RequestHandlerSelectors.basePackage("com.queeen.major"))
.paths(PathSelectors.any())
.build();
} private ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title("API文档")
.build();
}
}

其中,@EnableSwagger2注解来启用Swagger2,apis()定义了扫描的包路径

三、编写接口

Spring Boot中包含了一些注解,对应于HTTP协议中的方法:

@GetMapping对应HTTP中的GET方法;

@PostMapping对应HTTP中的POST方法;

@PutMapping对应HTTP中的PUT方法;

@DeleteMapping对应HTTP中的DELETE方法;

@PatchMapping对应HTTP中的PATCH方法。

 package com.bjgoodwill.oip.major.system.controller;

 import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody; import com.bjgoodwill.oip.core.enums.ExceptionEnum;
import com.bjgoodwill.oip.core.exception.CoreException;
import com.bjgoodwill.oip.core.util.StringUtils;
import com.bjgoodwill.oip.major.system.model.UserModel;
import com.bjgoodwill.oip.major.system.service.UserService;
import com.bjgoodwill.oip.major.system.util.R; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam; /**
* @Date 2018/7/13 10:50
* @Author HQueen
*/
@Controller
@RequestMapping(value="/user")
@Api(tags="用户信息")
public class UserController { @Autowired
UserService userService; /** 验证用户信息
* @param account
* @return
*/
@ApiOperation(value="验证用户信息", notes="验证用户信息")
@PostMapping(value="/verify")
@ResponseBody
public UserModel verifyUser(@ApiParam(name="account", value="用户名") String account){ if (StringUtils.isEmpty(account)) {
throw new CoreException(ExceptionEnum.REQUEST_NULL);
} UserModel model = userService.findByAccount(account); return model;
} /** 跳转至用户修护界面
* @param id
* @param model
* @return
*/
@ApiOperation(value="跳转至用户修护界面", notes="跳转至用户修护界面")
@GetMapping(value="/pre/{id}")
public String preUpdate(@ApiParam(name="id", value="用户ID") Long id, Model model) { UserModel userModel = userService.getByPrimaryKey(id); model.addAttribute("model", userModel); return "edit";
} /** 修改用户基本信息
* @param userModel
* @return
*/
@ApiOperation(value="修改用户基本信息", notes="修改用户基本信息")
@PostMapping(value="/update")
@ResponseBody
public R update(@ApiParam(name="userModel", value="用户信息类") UserModel userModel) { if (userService.update(userModel) > 0) {
return R.ok();
} return R.error();
}
}

四、启动及测试

  如上图所示,点击 Try it out! 就可以进行在线测试。

PS:

1. swagger和swagger 2的区别

  在官方文档上是这么说明的:

What is the relationship between swagger-ui and springfox-swagger-ui?

  • Swagger Spec is a specification.
  • Swagger Api - an implementation of that specification that supports jax-rs, restlet, jersey etc.
  • Springfox libraries in general - another implementation of the specification focused on the spring based ecosystem.
  • Swagger.js and Swagger-ui - are client libraries in javascript that can consume swagger specification.
  • springfox-swagger-ui - the one that you’re referring to, is just packaging swagger-ui in a convenient way so that spring services can serve it up.

  总的来说就是:

    1. Swagger 是一种规范。

    2. springfox-swagger 是基于 Spring 生态系统的该规范的实现。

    3. springfox-swagger-ui 是对 swagger-ui 的封装,使得其可以使用 Spring 的服务

2. 其他注解方式

  在上述 demo 中,楼主使用@ApiParam注解对参数进行描述,下面呢,楼主提供第二种注解方式。

 package com.bjgoodwill.oip.major.system.controller;

 import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody; import com.bjgoodwill.oip.core.enums.ExceptionEnum;
import com.bjgoodwill.oip.core.exception.CoreException;
import com.bjgoodwill.oip.core.util.StringUtils;
import com.bjgoodwill.oip.major.system.model.UserModel;
import com.bjgoodwill.oip.major.system.service.UserService;
import com.bjgoodwill.oip.major.system.util.R; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam; /**
* @Date 2018/7/13 10:50
* @Author HQueen
*/
@Controller
@RequestMapping(value="/user")
@Api(tags="用户信息")
public class UserController { @Autowired
UserService userService; /** 验证用户信息
* @param account
* @return
*/
@ApiOperation(value="验证用户信息", notes="验证用户信息")
@PostMapping(value="/verify")
@ApiImplicitParams({
@ApiImplicitParam(name="account", value="用户名", required=true, paramType="query", dataType="String")
})
@ResponseBody
public UserModel verifyUser(String account){ if (StringUtils.isEmpty(account)) {
throw new CoreException(ExceptionEnum.REQUEST_NULL);
} UserModel model = userService.findByAccount(account); return model;
} /** 跳转至用户修护界面
* @param id
* @param model
* @return
*/
@ApiOperation(value="跳转至用户修护界面", notes="跳转至用户修护界面")
@GetMapping(value="/pre/{id}")
@ApiImplicitParams({
@ApiImplicitParam(name="id", value="用户ID", required=true, paramType="path", dataType="Long")
})
public String preUpdate(Long id, Model model) { UserModel userModel = userService.getByPrimaryKey(id); model.addAttribute("model", userModel); return "edit";
} /** 修改用户基本信息
* @param userModel
* @return
*/
@ApiOperation(value="修改用户基本信息", notes="修改用户基本信息")
@PostMapping(value="/update")
@ResponseBody
public R update(@RequestBody @ApiParam(name="userModel", value="用户信息类") UserModel userModel) { if (userService.update(userModel) > 0) {
return R.ok();
} return R.error();
}
}

Spring Boot : Swagger 2的更多相关文章

  1. spring boot + swagger + mysql + maven

    1.首先编写 yaml 文件,创建项目所需的接口,在swagger.io官网上生成 spring boot项目: 2.由于生成的spring boot项目是公共类的所以还需要修改成所需的项目名称,主要 ...

  2. spring boot Swagger 集成

    1. pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://ww ...

  3. Spring Boot + Swagger

    前言: 在互联网公司, 微服务的使用者一般分为两种, 客户端和其他后端项目(包括关联微服务),不管是那方对外提供文档 让别人理解接口 都是必不可少的.传统项目中一般使用wiki或者文档, 修改繁琐,调 ...

  4. Spring Boot --- Swagger基本使用

    1. pom <!-- swagger2 --> <dependency> <groupId>io.springfox</groupId> <ar ...

  5. Spring Boot 集成Swagger

    Spring Boot 集成Swagger - 小单的博客专栏 - CSDN博客https://blog.csdn.net/catoop/article/details/50668896 Spring ...

  6. Spring Boot项目简单上手+swagger配置+项目发布(可能是史上最详细的)

    Spring Boot项目简单上手+swagger配置 1.项目实践 项目结构图 项目整体分为四部分:1.source code 2.sql-mapper 3.application.properti ...

  7. HTTP RESTful服务开发 spring boot+Maven +Swagger

    这周配合第三方平台整合系统,需要提供HTTP REST服务和使用ActiveMQ推送消息,研究了下,做个笔记. 1.使用eclipse创建Spring Boot项目  创建Spring Boot项目( ...

  8. spring boot swagger-ui.html 404

    很奇怪的问题,找了好久. 因为spring boot+swagger实现起来很简单.看下面三部曲: 1.pom添加两个swagger依赖. <!-- Swagger依赖包 --> < ...

  9. Spring boot中使用springfox来生成Swagger Specification小结

    Rest接口对应Swagger Specification路径获取办法: 根据location的值获取api   json描述文件 也许有同学会问,为什么搞的这么麻烦,api json描述文件不就是h ...

随机推荐

  1. 25. CTF综合靶机渗透(17)

    靶机链接 https://www.vulnhub.com/entry/the-ether-evilscience,212 运行环境 本靶机提供了VMware的镜像,从Vulnhub下载之后解压,运行v ...

  2. Asp.Net 之 Web.config 配置文件详解 -转

    在asp.net中配置文件名一般默认是web.config.每个web.config文件都是基于XML的文本文件,并且可以保存到Web应用程序中的任何目录中.在发布Web应用程序时web.config ...

  3. 如何修改html中列表项li所显示的圆点的颜色?,以及相关样式的设定

    这是li标签自带的圆点的颜色改变,代码如下: .centerbt li{ content:"."; color:gray; } 在标签li后面加入“@”符号,这里都会使用posit ...

  4. vue入门(二)----模板与计算属性

    其实这部分内容我也是参考的官网:http://cn.vuejs.org/v2/guide/syntax.html,但是我还是想把自己不懂的知识记录一下,加深印象,也可以帮助自己以后查阅.所谓勤能补拙. ...

  5. 【Java面试题系列】:Java中final finally finalize的区别

    本篇为[Java面试题系列]第三篇,文中如有错误,欢迎指正. 第一篇链接:[Java面试题系列]:Java基础知识常见面试题汇总 第一篇 第二篇链接:[Java面试题系列]:Java基础知识常见面试题 ...

  6. 洛谷P3803 【模板】多项式乘法(FFT)

    P3803 [模板]多项式乘法(FFT) 题目背景 这是一道FFT模板题 题目描述 给定一个n次多项式F(x),和一个m次多项式G(x). 请求出F(x)和G(x)的卷积. 输入输出格式 输入格式: ...

  7. PAT天梯赛L3-005 垃圾箱分布

    题目链接:点击打开链接 大家倒垃圾的时候,都希望垃圾箱距离自己比较近,但是谁都不愿意守着垃圾箱住.所以垃圾箱的位置必须选在到所有居民点的最短距离最长的地方,同时还要保证每个居民点都在距离它一个不太远的 ...

  8. ELK(+Redis)-开源实时日志分析平台

    ################################################################################################### ...

  9. 洛谷P5159 WD与矩阵

    题目背景 WD整日沉浸在矩阵中,无法自拔-- 题目描述 WD特别喜欢矩阵,尤其是\(01\)矩阵. 一天,CX给了WD一个巨大的\(n\)行\(m\)列的\(01\)矩阵,WD发现这个矩阵每行.每列的 ...

  10. linux下python3的安装(已安装python2的情况下)

    前段时间想自学一下python,就在虚拟机里已安装python2.7的情况下又安装了最新版python3.6.4.于是问题来了..只要一打开终端就出现一大段错误代码(忘记截图了),当时看到是ros和p ...