一、引入jar包

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

  

二、创建swagger2的配置类

@Configuration
@EnableSwagger2
public class Swagger2 {
@Bean
public Docket createRestApi(){
  //多个暴露路径时
  //com.google.common.base.Predicate<RequestHandler> selector1 = RequestHandlerSelectors.basePackage("com.dingzi.project.Controller");
//com.google.common.base.Predicate<RequestHandler> selector2 = RequestHandlerSelectors.basePackage("com.dingzi.project.apiController");
return new Docket(DocumentationType.SWAGGER_2)
//API基本信息
.apiInfo(apiInfo())
.select()
//暴露路径为当前包路径
.apis(RequestHandlerSelectors.basePackage("com.example.learn.swagger2"))
         //多个暴露路径
         //.apis(Predicates.or(selector1,selector2))
.paths(PathSelectors.any())
.build();
} //构建 api文档的详细信息函数,注意这里的注解引用的是哪个
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
//页面标题
.title("Spring Boot 测试使用 Swagger2")
//创建人、路径、邮箱
.contact(new Contact("dingzi", "", ""))
//版本号
.version("1.0")
//描述
.description("API 描述")
.build();
}
}

  

三、使用swagger2注解

@RestController
@RequestMapping("/api")
@Api("swagger2Controller测试api")
@Slf4j
public class SwaggerDemoController { @Autowired
private UserService userService; @ApiOperation(value = "根据id查询用户", notes = "查询用户信息")
@ApiImplicitParam(name = "id",value = "用户id",required = true)
@RequestMapping(value = "/getuser/{id}",method = RequestMethod.GET)
public User getUser(@PathVariable String id){
return userService.getUser(id);
}
}
  •   在controller上的注解

@Api:用在controller上,表示对类的说明。一般为

@Api("swagger2Controller测试api")

常用参数:
tags="说明该类的作用,非空时将覆盖value的值"
value="描述类的作用"
其他参数:
description 对api资源的描述,在1.5版本后不再支持
basePath 基本路径可以不配置,在1.5版本后不再支持
position 如果配置多个Api 想改变显示的顺序位置,在1.5版本后不再支持
produces 设置MIME类型列表(output),例:"application/json, application/xml",默认为空
consumes 设置MIME类型列表(input),例:"application/json, application/xml",默认为空
protocols 设置特定协议,例:http, https, ws, wss。
authorizations 获取授权列表(安全声明),如果未设置,则返回一个空的授权值。
hidden 默认为false, 配置为true 将在文档中隐藏

  

  • 用于方法上(说明参数的含义)

@ApiOperation:方法的说明      一般为

@ApiOperation(value = "根据id查询用户", notes = "查询用户信息")
常用参数:
value="说明方法的用途、作用"
notes="方法的备注说明"
其他参数:
tags 操作标签,非空时将覆盖value的值
response 响应类型(即返回对象)
responseContainer 声明包装的响应容器(返回对象类型)。有效值为 "List", "Set" or "Map"。
responseReference 指定对响应类型的引用。将覆盖任何指定的response()类
httpMethod 指定HTTP方法,"GET", "HEAD", "POST", "PUT", "DELETE", "OPTIONS" and "PATCH"
position 如果配置多个Api 想改变显示的顺序位置,在1.5版本后不再支持
nickname 第三方工具唯一标识,默认为空
produces 设置MIME类型列表(output),例:"application/json, application/xml",默认为空
consumes 设置MIME类型列表(input),例:"application/json, application/xml",默认为空
protocols 设置特定协议,例:http, https, ws, wss。
authorizations 获取授权列表(安全声明),如果未设置,则返回一个空的授权值。
hidden 默认为false, 配置为true 将在文档中隐藏
responseHeaders 响应头列表
code 响应的HTTP状态代码。默认 200
extensions 扩展属性列表数组

2、@ApiImplicitParams、@ApiImplicitParam:方法的参数的说明;@ApiImplicitParam 用于指定单个参数的说明,@ApiImplicitParams包含多个@ApiImplicitParam  一般为

@ApiImplicitParam(name = "id",value = "用户id",required = true)
@ApiImplicitParams({
  @ApiImplicitParam(name="name",value="用户名",dataType="string", paramType = "query",example="xingguo"), 
@ApiImplicitParam(name="id",value="用户id",dataType="long", paramType = "query")})
  name:参数名,参数名称可以覆盖方法参数名称,路径参数必须与方法参数一致
  value:参数的汉字说明、解释
  required:参数是否必须传,默认为false [路径参数必填]
  paramType:参数放在哪个地方
    ·header --> 请求参数的获取:
  @RequestHeader
    ·query --> 请求参数的获取:
  @RequestParam
    ·path(用于restful接口)--> 请求参数的获取:
  @PathVariable
    ·body(不常用)
    ·form(不常用)
  dataType:参数类型,默认String,其它值dataType="Integer"
  defaultValue:参数的默认值

3、@ApiResponses、@ApiResponse:方法返回值的状态码说明 一般为

@ApiResponse(code = 200, message = "请求成功");
@ApiResponses({
@ApiResponse(code = 200, message = "请求成功"),
@ApiResponse(code = 400, message = "请求参数没填好"),
@ApiResponse(code = 404, message = "请求路径没有或页面跳转路径不对")
})
@ApiResponses:方法返回对象的说明
@ApiResponse:每个参数的说明
code:数字,例如400
message:信息,例如"请求参数没填好"
response:抛出异常的类

  • 用于对象上(当请求数据描述,即 @RequestBody 时, 用于封装请求(包括数据的各种校验)数据;当响应值是对象时,即 @ResponseBody 时,用于返回值对象的描述。)

1、@ApiModel:用于JavaBean上面,表示对JavaBean 的功能描述   一般为

@ApiModel(value="用户登录信息", description="用于判断用户是否存在")
参数: value–表示对象名
description–描述

2、@ApiModelProperty:用在JavaBean类的属性上面,说明属性的含义  一般为

@ApiModelProperty(value="用户名")

参数:  value–字段说明
name–重写属性名字
dataType–重写属性类型
required–是否必填
example–举例说明
hidden–隐藏
  • 用于方法参数上

    1、@ApiParam() 用于方法,参数,字段说明;表示对参数的添加元数据(说明或是否必填等) 一般为

@ApiParam(name="id",value="用户id",required=true)

参数为:name–参数名
value–参数说明
required–是否必填


springboot使用swagger2生成开发文档的更多相关文章

  1. Springboot集成swagger2生成接口文档

    [转载请注明]: 原文出处:https://www.cnblogs.com/jstarseven/p/11509884.html    作者:jstarseven    码字挺辛苦的.....   一 ...

  2. 项目管理之 使用 appledoc 生成开发文档

    写项目时通常会遇到要求写开发文档的需求,但是就源代码来说,文档最好和源码在一起,这样更新起来更加方便和顺手.Objective-C 有一些文档管理工具,doxygen, headdoc 和 apple ...

  3. .NET6使用DOCFX自动生成开发文档

    本文内容来自我写的开源电子书<WoW C#>,现在正在编写中,可以去WOW-Csharp/学习路径总结.md at master · sogeisetsu/WOW-Csharp (gith ...

  4. 【netcore基础】.Net core使用swagger自动生成开发文档

    之前写过一篇 .Net 版本的博客 https://www.cnblogs.com/jhli/p/8317566.html 现在只不过用了 netcore 之后的版本,其实差不多 netcore版本的 ...

  5. [技巧]使用Xcode集成的HeaderDoc自动生成注释和开发文档

    [技巧]使用Xcode集成的HeaderDoc自动生成注释和开发文档     Doxygen本来是一个很好的工具,可是我感觉在mac系统下,如果用doxygen最后生成的CHM文件感觉就不是那么恰当, ...

  6. windows下使用 ApiGen 生成php项目的开发文档

    之前使用 PHPDocument 生成过开发文档,但是界面看着不爽,遂尝试了 ApiGen 生成,不得不说界面看着舒服多了,下面说说安装和使用的方法. ApiGen官网: http://www.api ...

  7. SpringBoot+rest接口+swagger2生成API文档+validator+mybatis+aop+国际化

    代码地址:JillWen_SpringBootDemo mybatis 1. 添加依赖: <dependency> <groupId>org.mybatis.spring.bo ...

  8. 基于x86架构的内核Demo的详细开发文档

    http://hurlex.0xffffff.org/ 这里是hurlex这个基于x86架构的内核Demo的详细开发文档, 包含PDF文档和生成PDF的XeLaTex源码和文档每章节的阶段代码. 你可 ...

  9. Mego开发文档 - 索引

    Mego 开发文档 Mego 快速概述 主要特性 获取Mego 使用流程 模型 查询 保存数据 入门 Mego 快速开始 创建项目 安装Nuget包 创建连接字符串 创建模型及数据上下文(添加引用) ...

随机推荐

  1. IDEA 半天卡住buid(编译)不动

    [号外号外!] 最终解决办法并不复杂,关键在于"遇见问题,怎么样层层分析,多条路径试错,最终解决问题的思路或者能力"--资深码农的核心竞争力之一 背景 今天结束完最近2个月的一个项 ...

  2. C++学习---顺序表的构建及操作

    #include<iostream> #include<fstream> using namespace std; #define MAXLEN 100 //定义顺序表 str ...

  3. 类型“DbContext”在未引用的程序集中定义。必须添加对程序及“EntityFramework,Version=6.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089”的引用。using语句中使用的类型必须可隐式转换为”System.IDisposable

    其他层引用Model层的ef模型时会发生这个错误 解决方法: 在你要使用EF模型的层下点击添加引用 然后点击浏览   找到Model层文件下的bin>debug文件   引用这两个dll文件 如 ...

  4. Linux入门到放弃之六《磁盘和文件系统管理一》

    要求:创建卷组名为 mail_store:逻辑卷名 mail,从卷组mail_store上划出50GB空间, 使用mkfs命令创建ext3文件系统,并实现开机自动挂载,挂载点/mailbox: (1) ...

  5. IPEX-1代/3代/4代/5代,PCB天线底座,公头,样式及封装尺寸图

    1.IPEX-1代,PCB天线底座 2.IPEX-3代,PCB天线底座 3.IPEX-4代,PCB天线底座 4.IPEX-5代,PCB天线底座

  6. APIview的使用

    大牛博客: h'ttp://www.cnblogs.com/xiaonq/p/10124104.html 1.ModelViewSet 是对 APIView 封装 2.ModelSerializer ...

  7. 适合 C++ 新手学习的开源项目——在 GitHub 学编程

    作者:HelloGitHub-小鱼干 俗话说:万事开头难,学习编程也是一样.在 HelloGitHub 的群里,经常遇到有小伙伴询问编程语言如何入门方面的问题,如: 我要学习某一门编程语言,有什么开源 ...

  8. 分布式文档存储数据库之MongoDB基础入门

    一.MongoDB简介 MongoDB是用c++语言开发的一款易扩展,易伸缩,高性能,开源的,schema free 的基于文档的nosql数据库:所谓nosql是指不仅仅是sql的意思,它拥有部分s ...

  9. 回顾MySql的一些基本的增删改查

    ---恢复内容开始--- 回顾数据库的一些简单的增删查改的操作语法与注意点,来自菜鸟教程https://www.runoob.com/mysql/mysql-tutorial.html 关于数据库的操 ...

  10. Linux C Socket 编程

    1 Socket 是什么 Socket(套接字),就是对 网络上进程通信 的 端点 的 抽象.一个 Socket 就是网络上进程通信的一端,提供了应用层进程利用网络协议交换数据的机制. 从所处的位置来 ...