每次修改完代码需要找原本的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. redis学习总结1

    Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的API.和普通的Key-Value结构不同,Redis的Key支持灵活 ...

  2. hdu1067

    #include<iostream> #include<cstdio> #include<cstring> #include<cmath> #inclu ...

  3. get与post方法(吴老师整理)

    Get方式:(用get方式请求时就是调用Servlet中的doGet方法) 1.第一种: 2.第二种:(<a>标签是一种get方式提交) 1.通过GET提交数据,用户名和密码将明文出现在U ...

  4. 交叉编译Spice-gtk

    Fedora环境 编译环境 操作系统: 64位 Fedora23 下载源文件 spice-gtk.spice-protocol 安装依赖 $ sudo yum install -y dh-autore ...

  5. python之02数据类型学习-作业练习

    题目: 购物车程序 salary = 5000 1. iphone6s 5800 2. mac book 9000 3. coffee 32 4. python book 80 5. bicyle 1 ...

  6. Baidu - Echarts 地图实例测试,并绘制平滑圆弧路径

    百度Echarts实例地址: http://echarts.baidu.com/examples.html 同事想做一个地图,地图上的几个点通过动态的线连接起来.但是在实例里没找到类似的. 然后仔细分 ...

  7. 与pocket 对接技术文档

    同步每日新增用户接口(kwai 提供) 注释:该接口 每天0点(北京时间)之后 向kwai服务器同步前一天  新增的IMEI号 url:http://m.kwai.com/rest/o/pocket/ ...

  8. 自定义标签报 无法为TAG [my2:hello]加载标记处理程序类[null]

    今天练习jsp自定义标签的时候,等我写好全部和检查万无一失的时候.执行然后报错了 无法为TAG [my2:hello]加载标记处理程序类[null] 我反复检查代码,发现代码也没什么问题.后面通过百度 ...

  9. 忘记mysql数据库密码时进行修改方法

    长时间没有使用数据库了,或者把密码改完之后就忘了数据库密码,不能正常进入数据库,也无法修改密码,有一个简单的常用修改密码方式: 1.首先找到和打开mysql.exe和mysqld.exe所在的文件夹( ...

  10. 注意sqlite3和java的整数数据类型的区别

    作为新手的我,没有考虑数据库和java的数据类型的对应上的区别: sqlite3的数据类型和java数据类型对应上要小心,特别是整数类型. java 中int类型4位存储,范围 -2^31到2^31- ...