swagger,中文“拽”的意思。它是一个功能强大的api框架,它的集成非常简单,不仅提供了在线文档的查阅,而且还提供了在线文档的测试。另外swagger很容易构建restful风格的api,简单优雅帅气,正如它的名字。

一、引入依赖

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

二、写配置类

@Configuration
@EnableSwagger2
public class Swagger2 {@Beanpublic Docket createRestApi() {return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()).select().apis(RequestHandlerSelectors.basePackage("com.forezp.controller")).paths(PathSelectors.any()).build();}private ApiInfo apiInfo() {return new ApiInfoBuilder().title("springboot利用swagger构建api文档").description("简单优雅的restfun风格,http://blog.csdn.net/forezp").termsOfServiceUrl("http://blog.csdn.net/forezp").version("1.0").build();}
}

通过@Configuration注解,表明它是一个配置类,@EnableSwagger2开启swagger2。apiINfo()配置一些基本的信息。apis()指定扫描的包会生成文档。

三、写生产文档的注解

swagger通过注解表明该接口会生成文档,包括接口名、请求方法、参数、返回信息的等等。

  • @Api:修饰整个类,描述Controller的作用
  • @ApiOperation:描述一个类的一个方法,或者说一个接口
  • @ApiParam:单个参数描述
  • @ApiModel:用对象来接收参数
  • @ApiProperty:用对象接收参数时,描述对象的一个字段
  • @ApiResponse:HTTP响应其中1个描述
  • @ApiResponses:HTTP响应整体描述
  • @ApiIgnore:使用该注解忽略这个API
  • @ApiError :发生错误返回的信息
  • @ApiParamImplicitL:一个请求参数
  • @ApiParamsImplicit 多个请求参数

现在通过一个栗子来说明:

package com.forezp.controller;import com.forezp.entity.Book;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.*;
import springfox.documentation.annotations.ApiIgnore;import java.util.*;/*** 用户创建某本图书    POST    /books/* 用户修改对某本图书    PUT    /books/:id/* 用户删除对某本图书    DELETE    /books/:id/* 用户获取所有的图书 GET /books*  用户获取某一图书  GET /Books/:id* Created by fangzhipeng on 2017/4/17.* 官方文档:http://swagger.io/docs/specification/api-host-and-base-path/*/
@RestController
@RequestMapping(value = "/books")
public class BookContrller {Map<Long, Book> books = Collections.synchronizedMap(new HashMap<Long, Book>());@ApiOperation(value="获取图书列表", notes="获取图书列表")@RequestMapping(value={""}, method= RequestMethod.GET)public List<Book> getBook() {List<Book> book = new ArrayList<>(books.values());return book;}@ApiOperation(value="创建图书", notes="创建图书")@ApiImplicitParam(name = "book", value = "图书详细实体", required = true, dataType = "Book")@RequestMapping(value="", method=RequestMethod.POST)public String postBook(@RequestBody Book book) {books.put(book.getId(), book);return "success";}@ApiOperation(value="获图书细信息", notes="根据url的id来获取详细信息")@ApiImplicitParam(name = "id", value = "ID", required = true, dataType = "Long",paramType = "path")@RequestMapping(value="/{id}", method=RequestMethod.GET)public Book getBook(@PathVariable Long id) {return books.get(id);}@ApiOperation(value="更新信息", notes="根据url的id来指定更新图书信息")@ApiImplicitParams({@ApiImplicitParam(name = "id", value = "图书ID", required = true, dataType = "Long",paramType = "path"),@ApiImplicitParam(name = "book", value = "图书实体book", required = true, dataType = "Book")})@RequestMapping(value="/{id}", method= RequestMethod.PUT)public String putUser(@PathVariable Long id, @RequestBody Book book) {Book book1 = books.get(id);book1.setName(book.getName());book1.setPrice(book.getPrice());books.put(id, book1);return "success";}@ApiOperation(value="删除图书", notes="根据url的id来指定删除图书")@ApiImplicitParam(name = "id", value = "图书ID", required = true, dataType = "Long",paramType = "path")@RequestMapping(value="/{id}", method=RequestMethod.DELETE)public String deleteUser(@PathVariable Long id) {books.remove(id);return "success";}@ApiIgnore//使用该注解忽略这个API@RequestMapping(value = "/hi", method = RequestMethod.GET)public String  jsonTest() {return " hi you!";}
}

通过相关注解,就可以让swagger2生成相应的文档。如果你不需要某接口生成文档,只需要在加@ApiIgnore注解即可。需要说明的是,如果请求参数在url上,@ApiImplicitParam 上加paramType = “path” 。

启动工程,访问:http://localhost:8080/swagger-ui.html ,就看到swagger-ui:

整个集成过程非常简单,但是我看了相关的资料,swagger没有做安全方面的防护,可能需要我们自己做相关的工作。

四、参考资料

swagger.io

Spring Boot中使用Swagger2构建强大的RESTful API文档

SpringBoot第十一篇:springboot集成swagger2,构建优雅的Restful API相关推荐

  1. springboot集成swagger2,构建优雅的Restful API

    springboot集成swagger2,构建优雅的Restful API 转载请标明出处: 原文首发于:https://www.fangzhipeng.com/springboot/2017/07/ ...

  2. Spring Boot 中使用 Swagger2 构建强大的 RESTful API 文档

    项目现状:由于前后端分离,没有很好的前后端合作工具. 由于接口众多,并且细节复杂(需要考虑不同的HTTP请求类型.HTTP头部信息.HTTP请求内容等),高质量地创建这份文档本身就是件非常吃力的事,下 ...

  3. Spring Boot中使用Swagger2构建强大的RESTful API文档

    由于Spring Boot能够快速开发.便捷部署等特性,相信有很大一部分Spring Boot的用户会用来构建RESTful API.而我们构建RESTful API的目的通常都是由于多终端的原因,这 ...

  4. springboot集成swagger2构建RESTful API文档

    在开发过程中,有时候我们需要不停的测试接口,自测,或者交由测试测试接口,我们需要构建一个文档,都是单独写,太麻烦了,现在使用springboot集成swagger2来构建RESTful API文档,可 ...

  5. spark restful_使用Spark构建简单的RESTful API

    spark restful 免责声明 :这篇文章是关于名为Spark的Java微型Web框架的,而不是关于数据处理引擎Apache Spark的 . 在此博客文章中,我们将看到如何使用Spark构建简 ...

  6. 使用Spark构建简单的RESTful API

    免责声明 :这篇文章是关于名为Spark的Java微型Web框架的,而不是关于数据处理引擎Apache Spark的 . 在此博客文章中,我们将看到如何使用Spark构建简单的Web服务. 如免责声明 ...

  7. 基于 Go 语言构建企业级的 RESTful API 服务

    现代软件架构已经逐渐从单体架构转向微服务架构,在微服务架构中服务间通信采用轻量级通信机制.对于轻量级通信的协议而言,通常基于 HTTP 和 RPC ,能让服务间的通信变的标准化并且无状态化.此外开发模 ...

  8. SpringBoot第二十一篇: springboot集成JMS

    springboot对JMS提供了很好的支持,对其做了起步依赖. 构架工程 创建一个springboot工程,在其pom文件加入: <dependency><groupId>o ...

  9. 第十一篇 SpringBoot 2 x整合Swagger2

    程序猿最烦两件事,第一件事是别人要他给自己的代码写文档,第二件呢?是别人的程序没有留下文档. 程序员最讨厌的四件事:写注释.写文档.别人不写注释.别人不写文档-- 关于写文档这个事情,争论已久,今天就 ...

最新文章

  1. 参考WebStorm设置VSCode“转到编辑器中的符号”快捷键为Shift双击(这是一个频繁使用的快捷键)
  2. 面试官:聊一聊 Spring Boot 服务监控机制
  3. 【学习笔记】node.js基础介绍
  4. 新站如何快速的度过考察期并避免进入沙盒期
  5. 关于python学习,最系统的学习网站看这里
  6. 大数据智能分析的特征和能力
  7. Emacs显示函数列表imenu-list
  8. 学习asp.net比较完整的流程 (对初学者有很好的帮助)
  9. python自动化办公——PIL根据模板生成结业证书
  10. 数电快速入门(三)(卡诺图化简法的介绍)
  11. GDI+ BMP转JPG
  12. hexo搭建博客文章目录分析
  13. 87个电影调色PR预设包
  14. DC-4靶场练习—teehee提权
  15. php opcode 启用,Drupal8安装提示PHP OPCODE CACHING未启用的解决方法
  16. ie 11 打印 iframe 404 降级解决方案
  17. 东秦OJ_1841: 超级密码
  18. 输入一行字符,分别统计其中大写英文字母,小写英文字母,空格,数字,和其他字符的个数。
  19. 上拉电阻、下拉电阻的理解
  20. 大型互联网系统架构演进之路

热门文章

  1. [VBScript] 自动删除2小时以前生成的文件
  2. Parallels Desktop 重装系统
  3. linux环境下搭建osm_web服务器一(Postgresql配置及osm2pgsql原始数据导入):
  4. 动态规划:求最大公共子串
  5. 如何通过代码连接SQL Server数据库
  6. delphi xe 文件服务器,DelphiXE7中创建WebService(服务端+客户端)
  7. Python 快速生成 web 动态展示机器学习项目!
  8. 乘“云原生”之风、踏“数字化”的浪,《新程序员003》开启预售!
  9. (送)Java 架构技术揭秘:Redis+Nginx+Dubbo精选+面试题+精选视频
  10. 深度解析MegEngine亚线性显存优化技术