转载:https://blog.csdn.net/xxoo00xx00/article/details/77163399

swagger 学习笔记

搭建环境:

  • 1,jdk1.8
  • 2,idea
  • 3,spring-boot-starter-parent版本1.5.6.RELEASE
  • 4,springfox-swagger2 And springfox-swagger-ui 版本2.2.2

1快速环境搭建

新建一个工程,file->new->Porject->Spring Initializr->next-如下图所示(idea专业版本,社区版可以到git上复制pom文件)

pom.xml文件中添加如下内容(看清楚再复制,此处不是全部内容)

    <properties>...<swagger.version>2.2.2</swagger.version> ... </properties> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>${swagger.version}</version> </dependency> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger-ui</artifactId> <version>${swagger.version}</version> </dependency>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

在config目录中新建swagger的配置文件swaggerConfig.java

@EnableSwagger2
@Configuration
public class SwaggerConfig { @Bean public Docket createRestApi() { return new Docket(DocumentationType.SWAGGER_2) .apiInfo(apiInfo()) .select() .apis(RequestHandlerSelectors.basePackage("com"))//扫描com路径下的api文档 .paths(PathSelectors.any())//路径判断 .build(); } private ApiInfo apiInfo() { return new ApiInfoBuilder() .title("《----我是title-----》")//标题 .description("《-----我是描述----》:http://www.google.com.hk")//描述 .termsOfServiceUrl("http://www.google.com.hk")//(不可见)条款地址 .contact(new Contact("zz","google.com.hk","123@qq.com"))//作者信息 .version("6.6.6")//版本号 .build(); } }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25

新建实体类User,基本字段如下

@ApiModel(value = "User得实体,----》",reference = "我是参考")
public class User { @ApiParam(value = "姓名--------------",required = true) private String name; //在swagger-ui.html#页面中如果返回User,ModelModel Schema选项卡可见 @ApiModelProperty(value = "id",dataType = "String") private String id; //在http://localhost:8080/v2/api-docs最后一行的实体可见 @ApiModelProperty(value = "年龄----------",required = true) private Integer age; ...此处省略set和get方法 } 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

在controller包立新建TestController,内容如下


@Api(value = "API - VehiclesController", description = "用户接口详情")
@RestController
@RequestMapping("/test") public class TestController { static Map<String, User> users = Collections.synchronizedMap(new HashMap<String,User>()); @ApiOperation(value="获取用户列表", notes="") @ApiResponses(value = { @ApiResponse(code = 200, message = "Successful — 请求已完成"), @ApiResponse(code = 400, message = "请求中有语法问题,或不能满足请求"), @ApiResponse(code = 401, message = "未授权客户机访问数据"), @ApiResponse(code = 404, message = "服务器找不到给定的资源;文档不存在"), @ApiResponse(code = 500, message = "服务器不能完成请求")} ) @RequestMapping(value={""}, method= RequestMethod.GET) public List<User> getUserList() { List<User> r = new ArrayList<User>(users.values()); return r; } ....此处省略n行代码 }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25

浏览改地址,访问主页面:http://localhost:8080/swagger-ui.html# 
浏览改地址,访问sagger专有jsonAPI: http://localhost:8080/v2/api-docs

2常用注释描述

上半部 

下半部 

下下部 

3全部注释列表

@Api 
Api 标记可以标记一个Controller类做为swagger 文档资源,使用方式

属性名称 备注
value url的路径值
tags 如果设置这个值、value的值会被覆盖
description 对api资源的描述
basePath 基本路径可以不配置
position 如果配置多个Api 想改变显示的顺序位置
produces For example, “application/json, application/xml”
consumes For example, “application/json, application/xml”
protocols Possible values: http, https, ws, wss.
authorizations 高级特性认证时配置
hidden 配置为true 将在文档中隐藏

@ApiOperation每一个url资源的定义,使用方式

属性名称 备注
value url的路径值
tags 如果设置这个值、value的值会被覆盖
description 对api资源的描述
basePath 基本路径可以不配置
position 如果配置多个Api 想改变显示的顺序位置
produces For example, “application/json, application/xml”
consumes For example, “application/json, application/xml”
protocols Possible values: http, https, ws, wss.
authorizations 高级特性认证时配置
hidden 配置为true 将在文档中隐藏
response 返回的对象
responseContainer 这些对象是有效的 “List”, “Set” or “Map”.,其他无效
httpMethod “GET”, “HEAD”, “POST”, “PUT”, “DELETE”, “OPTIONS” and “PATCH”
code http的状态码 默认 200
extensions 扩展属性

@ApiParam标记 
public ResponseEntity createUser(@RequestBody @ApiParam(value = “user”, required = true) User user)

属性名称 备注
name 属性名称
value 属性值
defaultValue 默认属性值
allowableValues 可以不配置
required 是否属性必填
access 不过多描述
allowMultiple 默认为false
hidden 隐藏该属性
example 举例子

@ApiImplicitParam对容器的描述

属性名称 备注
name 属性名称
value 属性值
defaultValue 默认值
allowableValues 可以不可配置
required 是否属性必填
access 不可过多描述
allowMutiple 默认为false
dataType 数据类型
paramType 参数类型

@ApiResponse

属性名称 备注
code http的状态码
message 描述
response 默认响应类 Void
reference 参考ApiOperation中配置
responseHeaders 参考 ResponseHeader 属性配置说明
responseContainer 参考ApiOperation中配置

@ResponseHeader(name=”head1”,description=”response head conf”)

属性名称 备注
name 响应头名称
description 头描述
response 默认响应类 Void
responseContainer 参考ApiOperation中配置

4文档编写规范建议

  • entity的描述

@ApiModel(description = “我是描述”,value = “用户”) 
对实体的描述

description:在v2/api-docs的实体看到描述, 
value的值在@ApiImplicitParam注解中的dataType可用,

@ApiModelProperty(value = “用户姓名”,required = true,dataType = “String”) 
private String name; 
对字段的描述

value:1,入参和出参的ModelModel Schema选项卡可见,2,在v2/api-docs的实体字段描述可见 
required:该属性是否必填写 
dataType:该字段的数据类型

  • controller的描述

@Api(value = “API”, description = “用户接口详情”,tags=”A”) 
对controler的描述

value:访问某个controller的url的根路径值 
description:对于该controller的的大概描述 
tags:把api接口进行分分组

@ApiOperation(value = “获取用户详细信息”, notes = “根据url的id来获取用户详细信息”,httpMethod =”GET”) 
对该方法的描述

value:主页面中对该接口的描述,位置在接口的最右边 
notes:点开接口后,第一段描述。 
httpMethod:HTTP请求的动作名,可选值有:”GET”, “HEAD”, “POST”, “PUT”, “DELETE”, “OPTIONS” and “PATCH”。

@ApiImplicitParam(name = “id”, value = “用户ID”, required = true, dataType = “String”, paramType = “path”) 
对参数的描述,如果多个参数需要用@ApiImplicitParams对其进行包裹

name:参数名称 
value:参数的简短描述 
required:是否必须传递的参数 
dataType:参数类型,可以为类名,也可以为基本类型(String,int,Boolean) 
paramType:参数的传入(请求)类型,可选的值有path, query, body, header or form。(如果在路径中提取参数用path比如:在/A/{XXX}路径中得到XXX的值)

@ApiParam(name = “user”, value = “userValue”, required = true) 
对参数元信息的说明,一般这个注解只能被使用在JAX-RS 1.x/2.x的综合环境下,和ApiImplicitParam注解类似

required:该参数是否必填 
value:该参数的简短介绍

@ApiResponse(code = 200, message = “Successful — 请求已完成”) 
返回状态码的描述,如果有多个可以使用@ApiResponses注解进行包裹

code:服务器返回的状态码 
message:服务器返回状态码的简短说明

sample:header中传递token

@ApiImplicitParams({@ApiImplicitParam(name = "TOKEN", value = "Authorization token", required = true, dataType = "string", paramType = "header")})
  • 1

5,注意事项:

  • 路径参数比如一直传递 {id},需要在ApiImplicitParam注解中添加prameType=“path”
  • 版本问题,需要删除m2里面的jar包,2.2.2的swagger和1.5.6的spring-boot-prent才是绝配,试过很多最新的包,感觉多多少少都有点问题!
  • 入参数和出参数都能用到一个实体类,注意检查@ApiModel的value属性

6参考文档

可能还有其他没有列出的参考文档,见谅

https://gumutianqi1.gitbooks.io/specification-doc/content/tools-doc/spring-boot-swagger2-guide.html

http://www.jianshu.com/p/12f4394462d5

http://blog.didispace.com/springbootswagger2/

https://dzone.com/articles/spring-boot-restful-api-documentation-with-swagger

http://www.jianshu.com/p/b0b19368e4a8

转载于:https://www.cnblogs.com/xiaolovewei/p/9001198.html

swagger快速开发相关推荐

  1. 阿里工作流引擎_免费开源,一款快速开发模块化脚手架,含工作流引擎

    简介 lenosp 一款快速开发模块化脚手架,采用 spring boot 2.0.1.spring.SpringMvc.mybatis.shiro.activiti 工作流.swagger.ehca ...

  2. lenos快速开发脚手架

    2019独角兽企业重金招聘Python工程师标准>>> lenos一款快速开发模块化脚手架, lenos(p为spring boot版本扩展名)一款快速开发模块化脚手架,采用spri ...

  3. activiti 工作流_activiti-boot快速开发工作流框架

    activiti-boot是一个快速开发的工作流框架, 采用流行的框架springBoot+mybatis+shiro+redis开发,实现了权限管理(菜单权限.数据权限),activiti工作流程引 ...

  4. android java代码打印系统日志_Java快速开发平台源码

    Java快速开发平台源码 用户权限管理系统源码 一个轻量级的Java快速开发平台,能快速开发项目并交付[接私活利器] 友好的代码结构及注释,便于阅读及二次开发 实现前后端分离,通过token进行数据交 ...

  5. 如何设计一个API快速开发平台?

    点击上方☝码猿技术专栏 轻松关注,设为星标! 及时获取有趣有料的技术 来源:toutiao.com/i6914469326074479108/ 在我之前谈API网关的时候曾经谈到过快速开发平台,即将A ...

  6. GeneXus开发平台 拖拽低代码 JNPF源码,java开源快速开发平台

    GeneXus开发平台 GeneXus是一个敏捷的开发平台,使您的公司轻松应对技术的发展.GeneXus极大的简化了软件程序的开发过程,能自动生成从数据库到代码.前端到后端.服务器端到客户端服务的所有 ...

  7. MSCode微服务平台框架基于SpringCloud、SpringCloud Alibaba、SpringBoot和Activiti7工作流,快速开发办公OA、CRM、ERP、电商、信息管理等业务系统

    MSCode微服务平台框架 mscodecloud.com 基于Spring Cloud.Spring Boot和Activiti7工作流,提供所有源码和详尽文档,帮助企业快速开发分布式业务系统. 企 ...

  8. API 快速开发平台设计思考

    作者 | 人月聊IT 来源 | toutiao.com/i6914469326074479108 在我之前谈API网关的时候曾经谈到过快速开发平台,即将API快速开发的一些内容放入到API网关中,实际 ...

  9. 打造一个 API 快速开发平台,牛逼!

    来源:toutiao.com/i6914469326074479108/ 在我之前谈API网关的时候曾经谈到过快速开发平台,即将API快速开发的一些内容放入到API网关中,实际来看围绕API全生命周期 ...

最新文章

  1. oracle误删scott文件如何恢复
  2. The constructor BASE64Decoder() is not accessible due to restriction on required library
  3. selenium.common.exceptions.WebDriverException: Message: ‘chromedriver‘ executable needs to bein PATH
  4. linux openjdk_OpenJDK作为Linux上的默认Java
  5. mysql把游标数据存入表中_mysql数据库怎么使用游标
  6. Linux之间配置SSH互信(SSH免密码登录)
  7. 开公司的两个方向,要么把公司开成很赚钱,要么把公司做成很值钱
  8. PyTorch 学习笔记(六):PyTorch的十八个损失函数
  9. Android瀑布流照片墙实现,体验不规则排列的美感
  10. 1.thinkphp6配置文件详解
  11. 页面加载速度优化的建议
  12. 用了这个工具,我设计的PCB再也没出过问题
  13. mysql字符串拼接有空值_mysql字符串如何拼接并设置null值 mysql字符串拼接并设置null值实例方法...
  14. [Vue]鼠标悬停变色
  15. 交换机连接控制器_MESH路由器组网指南,各种连接方法
  16. 怎样可以促进睡眠质量?睡眠不好一定要知道这些方法
  17. linux 用户登陆记录,Linux查看用户登陆历史记录
  18. SSD算法详解default box
  19. 汉罗塔问题和杨辉三角(java实现)
  20. Android通用流行框架大全,零基础入门学习android

热门文章

  1. JavaFX弹出窗口和消息对话框代码示例
  2. ClickHouse数据分析列式数据库概述
  3. ndoejs优先从缓存加载机制
  4. Scala类的继承和抽象类
  5. Linux uptime指令
  6. windows下使用curl以及常用curl命令
  7. 配置MGR时修改了/etc/hosts但映射后的hostname不起作用
  8. Eclipse 安装Spring tool suite 解决官网下载jar文件无法安装/安装过程出错,及如何下载对应版本zip文件等问题,避坑
  9. java 排序stackoverflow_JAVA开发知识点
  10. html解析的简单方式,HTML解析看我就够了,不依赖任何第三方,两个方法搞定