本文讲解如何在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. angular-messages.js信息验证的使用

    ngMessages(1.3+) 众所周知,表单和验证是Angular中复杂的组件之一.上面的例子不是特别好,不简洁.在Angular 1.3发布前,表单验证必须以这种方式编写.然而在发布的Angul ...

  2. Redis 有序集合(sorted set),发布订阅,事务,脚本,连接,服务器(三)

    Redis 有序集合(sorted set) Redis 有序集合和集合一样也是string类型元素的集合,且不允许重复的成员. 不同的是每个元素都会关联一个double类型的分数.redis正是通过 ...

  3. ZOJ 3498 Javabeans(找规律)

    Javabeans Time Limit: 2 Seconds      Memory Limit: 65536 KB Javabeans are delicious. Javaman likes t ...

  4. 初识Linux(四)--系统常用命令

    这里记录一下基础的系统常用命令,都是日常可能用到的,需要记住的一些命令.主要分为5个模块:关于时间,输出/查看,关机/重启,压缩归档和查找. 时间:      date :查看设置当前系统时间,dat ...

  5. 任务调度 Spring Task 4(一)

    深入浅出spring task定时任务 在工作中有用到spring task作为定时任务的处理,spring通过接口TaskExecutor和TaskScheduler这两个接口的方式为异步定时任务提 ...

  6. 从无到有开发自己的Wordpress博客主题---创建主题

    上一篇教程,我们已经安装了Wordpress,我们可以成功的登录到Wordpress后台,接下来的任务就是创建我们自己的主题. 要想创建一个Wordpress主题,就必须按照Wordpress的规则, ...

  7. WDF - CSS 书写规范

    CSS已经写了很久了,但是感觉代码还是有点乱,不够漂亮.今天抽点时间整理一下手头上正在做的网站样式,顺带做一个自己比较适应的书写规范,以供以后参考.先暂时这样吧,其他以后再完善. 逻辑:大小 → 位置 ...

  8. HDU - 6180:Schedule(简单贪心)

    There are N schedules, the i-th schedule has start time s i  si and end time e i  ei (1 <= i < ...

  9. bzoj 1597 [Usaco2008 Mar]土地购买——斜率优化dp

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1597 又一道斜率优化dp.负数让我混乱.不过仔细想想还是好的. 还可以方便地把那个负号放到x ...

  10. List<Map> 排序

    import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.u ...