本文讲解如何在spring-boot中使用swagger文档自动生成工具

目录结构

说明

  1. swagger的使用本身是非常简单的,因为所有的一切swagger都帮你做好了,你所要做的就是专注写你的api信息
  2. swagger自动生成html文档并且打包到jar包中
  3. 本文不仅用了swaggerJSR 303注释信息也支持使用

依赖

  1. // springfox-bean-validators 用来支持 JSR 303
  2. <dependency>
  3. <groupId>io.springfox</groupId>
  4. <artifactId>springfox-swagger2</artifactId>
  5. <version>2.9.2</version>
  6. </dependency>
  7. <dependency>
  8. <groupId>io.springfox</groupId>
  9. <artifactId>springfox-swagger-ui</artifactId>
  10. <version>2.9.2</version>
  11. </dependency>
  12. <dependency>
  13. <groupId>io.springfox</groupId>
  14. <artifactId>springfox-bean-validators</artifactId>
  15. <version>2.9.2</version>
  16. </dependency>

SwaggerConfig

  1. package com.springlearn.learn.config;
  2. import org.springframework.context.annotation.Bean;
  3. import org.springframework.context.annotation.Configuration;
  4. import org.springframework.context.annotation.Import;
  5. import org.springframework.web.servlet.config.annotation.CorsRegistry;
  6. import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
  7. import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;
  8. import springfox.bean.validators.configuration.BeanValidatorPluginsConfiguration;
  9. import springfox.documentation.builders.ApiInfoBuilder;
  10. import springfox.documentation.builders.RequestHandlerSelectors;
  11. import springfox.documentation.service.ApiInfo;
  12. import springfox.documentation.service.Contact;
  13. import springfox.documentation.spi.DocumentationType;
  14. import springfox.documentation.spring.web.plugins.Docket;
  15. import springfox.documentation.swagger2.annotations.EnableSwagger2;
  16. import static springfox.documentation.builders.PathSelectors.regex;
  17. @Configuration
  18. @EnableSwagger2
  19. @Import(BeanValidatorPluginsConfiguration.class)
  20. public class SwaggerConfig extends WebMvcConfigurationSupport {
  21. private ApiInfo metaData() {
  22. return new ApiInfoBuilder()
  23. .title("Spring Boot REST API")
  24. .description("\"REST API 测试\"")
  25. .version("1.0.0")
  26. .license("无")
  27. .licenseUrl("https://www.baidu.com")
  28. .contact(new Contact("yejiawei", "https://www.cnblogs.com/ye-hcj/", "2640199637@qq.com"))
  29. .build();
  30. }
  31. @Bean
  32. public Docket productApi() {
  33. return new Docket(DocumentationType.SWAGGER_2)
  34. .select()
  35. .apis(RequestHandlerSelectors.basePackage("com.springlearn.learn.controller"))
  36. .paths(regex("/.*"))
  37. .build()
  38. .apiInfo(metaData());
  39. }
  40. @Override
  41. protected void addResourceHandlers(ResourceHandlerRegistry registry) {
  42. registry.addResourceHandler("swagger-ui.html")
  43. .addResourceLocations("classpath:/META-INF/resources/");
  44. registry.addResourceHandler("/webjars/**")
  45. .addResourceLocations("classpath:/META-INF/resources/webjars/");
  46. }
  47. @Override
  48. public void addCorsMappings(CorsRegistry registry) {
  49. registry.addMapping("/**").allowedOrigins("*").allowedMethods("GET", "POST", "PUT", "DELETE").allowedOrigins("*")
  50. .allowedHeaders("*");
  51. }
  52. }

开启api界面

  1. 在你做好了上述的步骤以后,运行项目
  2. 直接访问 yourapiurl/v2/api-docs 查看json数据
  3. 直接访问 yourapiurl/swagger-ui.html 查看文档界面

JSR 303注释信息

  1. @NotNull(message = "...")
  2. @NotBlank(message = "...")
  3. @Pattern(regexp = "[a-z-A-Z]*", message = "...")
  4. @Past(message = "过去的日期...")
  5. @Min(value = 1, message = "必须大于或等于1")
  6. @Max(value = 10, message = "必须小于或等于10")
  7. @Email(message = "Email Address")

Swagger核心注释

  1. @ApiModel 返回json对象描述
  2. @ApiModelProperty 返回json对象属性描述
  3. @ApiResponses 设置状态码含义
  4. @Api 控制器描述
  5. @ApiOperation api描述
  6. @ApiParam api参数描述

User

  1. package com.springlearn.learn.model;
  2. import javax.validation.constraints.Max;
  3. import javax.validation.constraints.Min;
  4. import javax.validation.constraints.NotBlank;
  5. import javax.validation.constraints.NotNull;
  6. import javax.validation.constraints.Pattern;
  7. import javax.validation.constraints.Size;
  8. import io.swagger.annotations.ApiModel;
  9. import io.swagger.annotations.ApiModelProperty;
  10. @ApiModel(description = "用户基本信息")
  11. public class User {
  12. // @NotBlank
  13. // @Size(min = 1, max = 10)
  14. @ApiModelProperty(notes = "用户姓名", example = "叶家伟", required = true, position = 0)
  15. String name;
  16. // @NotBlank
  17. @Pattern(regexp ="[m|f]")
  18. @ApiModelProperty(notes = "用户性别", example = "m", required = true, position = 1)
  19. Character sex;
  20. // @NotNull
  21. // @Min(0)
  22. // @Max(100)
  23. @ApiModelProperty(notes = "用户年龄", example = "19", position = 3)
  24. Integer age;
  25. public String getname() {
  26. return name;
  27. }
  28. public void setname(String name) {
  29. this.name = name;
  30. }
  31. public Character getsex() {
  32. return sex;
  33. }
  34. public void setsex(Character sex) {
  35. this.sex = sex;
  36. }
  37. public Integer getage() {
  38. return age;
  39. }
  40. public void setage(Integer age) {
  41. this.age = age;
  42. }
  43. }

TestController

  1. package com.springlearn.learn.controller;
  2. import javax.servlet.http.HttpServletRequest;
  3. import com.springlearn.learn.model.User;
  4. import org.springframework.web.bind.annotation.PathVariable;
  5. import org.springframework.web.bind.annotation.RequestMapping;
  6. import org.springframework.web.bind.annotation.RequestMethod;
  7. import org.springframework.web.bind.annotation.ResponseBody;
  8. import org.springframework.web.bind.annotation.RestController;
  9. import io.swagger.annotations.Api;
  10. import io.swagger.annotations.ApiOperation;
  11. import io.swagger.annotations.ApiParam;
  12. import io.swagger.annotations.ApiResponse;
  13. import io.swagger.annotations.ApiResponses;
  14. @RestController
  15. @Api(value="测试控制器", description="测试控制器描述")
  16. @ApiResponses(value = {
  17. @ApiResponse(code = 200, message = "Successfully retrieved list"),
  18. @ApiResponse(code = 401, message = "You are not authorized to view the resource"),
  19. @ApiResponse(code = 403, message = "Accessing the resource you were trying to reach is forbidden"),
  20. @ApiResponse(code = 404, message = "The resource you were trying to reach is not found")
  21. })
  22. public class TestController {
  23. @ResponseBody
  24. @RequestMapping(value = "/test1/{id}", method = RequestMethod.GET, produces = "application/json")
  25. @ApiOperation(value = "测试api", response = User.class)
  26. public User Test1(HttpServletRequest request, @ApiParam("Id of the person to be obtained. Cannot be empty.") @PathVariable int id){
  27. User user = new User();
  28. user.setname("叶家伟");
  29. user.setage(18);
  30. user.setsex('m');
  31. return user;
  32. }
  33. }

springboot成神之——swagger文档自动生成工具的更多相关文章

  1. Api文档自动生成工具

    java开发,根据代码自动生成api接口文档工具,支持RESTful风格,今天我们来学一下api-doc的生成 作者:互联网编程. 欢迎投稿,一起交流技术 https://www.jianshu.co ...

  2. Word 2010文档自动生成目录和某页插入页码

    一.Word 2010文档自动生成目录 关于Word文档自动生成目录一直是我身边同学们最为难的地方,尤其是毕业论文,经常因为目录问题,被要求修改,而且每次修改完正文后,目录的内容和页码可能都会发生变化 ...

  3. VS文档自动生成

    VS2008文档自动生成 (发现,Sandcastle主要是用于C#项目.里面的注释都是XML格式的.不太适合VC的.最终还是得用Doxygen) 一.Sandcastle简介: Sandcastle ...

  4. django接口文档自动生成

    django-rest_framework接口文档自动生成 只针对用到序列化和返序列化 一般还是用第三方yipi 一.安装依赖 pip3 install coreapi 二.设置 setting.py ...

  5. 基于 React 开发了一个 Markdown 文档站点生成工具

    Create React Doc 是一个使用 React 的 markdown 文档站点生成工具.就像 create-react-app 一样,开发者可以使用 Create React Doc 来开发 ...

  6. 优于 swagger 的 java markdown 文档自动生成框架-01-入门使用

    设计初衷 节约时间 Java 文档一直是一个大问题. 很多项目不写文档,即使写文档,对于开发人员来说也是非常痛苦的. 不写文档的缺点自不用多少,手动写文档的缺点也显而易见: 非常浪费时间,而且会出错. ...

  7. java 文档自动生成的神器 idoc

    写文档 作为一名开发者,每个人都要写代码. 工作中,几乎每一位开发者都要写文档. 因为工作是人和人的协作,产品要写需求文档,开发要写详细设计文档,接口文档. 可是,作为一个懒人,平时最讨厌的一件事情就 ...

  8. 如何让接口文档自动生成,SpringBoot中Swagger的使用

    目录 一.在SpringBoot项目中配置Swagger2 1.pom.xml中对Swagger2的依赖 2.编写配置类启用Swagger 3.配置实体类的文档 4.配置接口的文档 5.访问文档 二. ...

  9. swagger:API在线文档自动生成框架

    传统的API从开发测试开始我们经常借用类似Postman.fiddle等等去做接口测试等等工具:Swagger 为API的在线测试.在线文档提供了一个新的简便的解决方案: NET 使用Swagger ...

随机推荐

  1. datagrid中用tooltip

    function msgFormat(value,row){ value = value.replace(/ /g," "); return '<span title='+ ...

  2. Chrome浏览器导入数字证书

    1.打开 chrome ,点击 右上角的选项图标,在下拉列表中找到 设置 . 2.在设置页面中,滚动到页面的最底部,找到,并点击显示高级设置,找到 HTTPS/SSL 这一项,点击 管理证书 按键.

  3. MongoDB架构——记得结合前面的文章看,里面的图画的很好

    转自:http://www.ha97.com/4580.html 本文图片来自Ricky Ho的博文MongoDB构架(MongoDB Architecture),这是个一听就感觉很宽泛的话题,但是作 ...

  4. 【deep learning精华部分】稀疏自编码提取高阶特征、多层微调完全解释及代码逐行详解

    我们前面已经讲了如何训练稀疏自编码神经网络,当我们训练好这个神经网络后,当有新的样本输入到这个训练好的稀疏自编码器中后,那么隐藏层各单元的激活值组成的向量就可以代表(因为根据稀疏自编码,我们可以用来恢 ...

  5. Struts12---文件的下载

    01.创建一个下载的页面  (我们的下载是把文件的路径写成固定的) <body> <form action="user/download" method=&quo ...

  6. [python] 排序的动态展示

    两句闲话 本文所说的排序是指基于交换的排序.因此,按理来说,本文应该叫基于交换的排序的动态展示,但是这样太拗口了. 效果展示 最终效果如下. 实现方法 需要说明的是,在这里是通过pygame来实现图形 ...

  7. HihoCoder1622 : 有趣的子区间(预处理+组合数)

    有趣的子区间 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 如果一个区间[a, b]内恰好包含偶数个回文整数,我们就称[a, b]是有趣的区间. 例如[9, 12]包含 ...

  8. SSH实现远程控制

    SSH(Secure Shell)是一种能够提供安全远程登录会话的协议,使用ssh可以在远程linux中执行命令. sshd服务提供两种安全验证的方法: (1)基于口令的安全验证:经过验证帐号与密码即 ...

  9. Quartz 2D编程指南(1) - 概览

    Quartz 2D编程指南是论坛会员德鲁伊翻译的国外的Quartz 2D一系列学习资料,供大家参考 Quartz 2D是一个二维图形绘制引擎,支持iOS环境和Mac OS X环境.我们可以使用Quar ...

  10. 给UIButton设置阴影及动画组

    //设置“开启旅程”按钮 UIButton *startBtn = self.startBtn; CGFloat btnW = ; CGFloat btnH = ; CGFloat btnX = (s ...