当前位置: 首页 > 编程日记 > 正文

springboot整合swagger2之最佳实践

来源:https://blog.lqdev.cn/2018/07/21/springboot/chapter-ten/

Swagger是一款RESTful接口的文档在线自动生成、功能测试功能框架。

一个规范和完整的框架,用于生成、描述、调用和可视化RESTful风格的Web服务,加上swagger-ui,可以有很好的呈现。

SpringBoot集成

  • pom
<!--swagger -->
<dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger2</artifactId><version>2.8.0</version>
</dependency>
<dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger-ui</artifactId><version>2.8.0</version>
</dependency>
  • 编写配置文件(SwaggerConfig.java)
@EnableSwagger2
@Configuration
public class SwaggerConfig {//是否开启swagger,正式环境一般是需要关闭的,可根据springboot的多环境配置进行设置@Value(value = "${swagger.enabled}")Boolean swaggerEnabled;@Beanpublic Docket createRestApi() {return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo())// 是否开启.enable(swaggerEnabled).select()// 扫描的路径包.apis(RequestHandlerSelectors.basePackage("cn.lqdev.learning.springboot.chapter10"))// 指定路径处理PathSelectors.any()代表所有的路径.paths(PathSelectors.any()).build().pathMapping("/");}private ApiInfo apiInfo() {return new ApiInfoBuilder().title("SpringBoot-Swagger2集成和使用-demo示例").description("oKong | 趔趄的猿")// 作者信息.contact(new Contact("oKong", "https://blog.lqdev.cn/", "499452441@qq.com")).version("1.0.0").build();}
}

设置注解

  • controller

    • 类:@Api(value = "预订业务逻辑接口", description = "预订业务逻辑接口",tags="用户API")
    • 方法:@ApiOperation(value = "保存预订数据", response = 本类.class)
    • 路径参数/{id}:@ApiImplicitParam(name="id",value="查询ID",required=true)
    • 普通参数:@ApiParam(name = "id", value = "预订食品信息id", required = true)
  • entity

    • 类名:@ApiModel(value = "记账凭证详情", description = "记账凭证详情")
    • 类属性:@ApiModelProperty(name = "id", value = "记账凭证详情ID",dataType="String",example="1020332806740959233" )

访问:http://127.0.0.1:8080/swagger-ui.html

Swagger常用属性说明

作用范围API使用位置
对象属性@ApiModelProperty用在出入参数对象的字段上
协议集描述@Api用于controller类上
协议描述@ApiOperation用在controller的方法上
Response集@ApiResponses用在controller的方法上
Response@ApiResponse用在 @ApiResponses里边
非对象参数集@ApiImplicitParams用在controller的方法上
非对象参数描述@ApiImplicitParam用在@ApiImplicitParams的方法里边
描述返回对象的意义@ApiModel用在返回对象类上

常用的注解@Api@ApiOperation@ApiModel@ApiModelProperty示例中有进行标注,对于其他注解,大家可自动谷歌,毕竟常用的就这几个了。

有了swagger之后,原本一些post请求需要postman这样的调试工具来进行发起,而现在直接在页面上就可以进行调试了,是不是很爽!

对于服务的调用者而已,有了这份api文档也是一目了然,不需要和后端多少沟通成本,按着api说明进行前端开发即可。

相关文章:

转:动态链接库的全局变量问题

动态链接库的全局变量问题 请问动态链接库被外部多次调用时&#xff0c;每次调用中动态库自身的全局变量都会重新初始化吗&#xff1f;如果会那怎么来使我每次调用动态库时都能从上次的状态开始执行呢&#xff1f; 你这个问题得分被调用的是同一个进程还是不同的进程。如果是不…

排名前 16 的 Java 工具类

转载来自微信公众号&#xff1a;Java 技术栈。如有侵权&#xff0c;请联系作者删除&#xff01;&#xff01; 在 Java 中&#xff0c;工具类定义了一组公共方法&#xff0c;这篇文章将介绍 Java 中使用最频繁及最通用的 Java 工具类。以下工具类、方法按使用流行度排名&#xf…

c4d教程-太空火车站场景创作视频教程Skillshare – Create A Space Train Scene With Cinema 4D Redshift Render

c4d教程-太空火车站场景创作视频教程Skillshare – Create A Space Train Scene With Cinema 4D & Redshift Render 教程大小 1.66G 共15小节 1280X720 mp4 视频 语言&#xff1a;英语中文字幕 百度一下 云桥网络 平台huo取 教程&#xff01; Skillshare – Create A Spa…

Java学习总结:23

前言&#xff1a;断更挺久了&#xff0c;今天把之前的补上 Annotation 3种最为常用的Annotation定义&#xff0c;Override、Deprecated和SuppressWarnings 1.准确的覆写&#xff1a;Override 当进行方法覆写时&#xff0c;为了保证子类所覆写的方法的确是父类中定义过的方法…

Windows Live Writer发布测试

通过Windows Live Writer发布文章测试&#xff01;&#xff01;&#xff01;&#xff01; 转载于:https://www.cnblogs.com/passerlee/p/5000567.html

2022-2028年中国锂电池用聚烯烃隔膜行业市场发展调研及投资方向分析报告

【报告类型】产业研究 【报告价格】4500起 【出版时间】即时更新&#xff08;交付时间约3个工作日&#xff09; 【发布机构】智研瞻产业研究院 【报告格式】PDF版 本报告介绍了中国锂电池用聚烯烃隔膜行业市场行业相关概述、中国锂电池用聚烯烃隔膜行业市场行业运行环境、…

【莫队算法】bzoj3781 小B的询问

莫队经典。 开个数组维护a[i]出现的次数。 1 #include<cstdio>2 #include<cmath>3 #include<algorithm>4 using namespace std;5 int Num,CH[12],f,c;6 inline void R(int &x){7 c0;f1;8 for(;c<0||c>9;cgetchar())if(c-)f-1;9 for(x0…

计算机为什么需要十六进制?

我们知道内存是按照字节粒度来寻址的,因此采用的数字系统必须很好的表达一个字节,也就是8比特,从这个角度上看256进制(2^8)是最好的,因为一个256进制就是表达一个字节,但还是基于可读性的原因,256进制对于人类来说记忆负担过重,而16进制则刚刚好,一个16进制数字表示一个字节的一半(4个比特),两个16进制数字正好表示一个字节。每个十六进制中的数字代表4个比特,你可以非常直观的从十六进制中知道对应的二进制是啥,比如给定一个十六进制数,假设其最后一位是9,那为什么十六进制是二进制的好朋友呢?

JAVA 自定义函数式编程

​ 2.2)定义接口 void testInterface(String str);2.定义一个普通接口(TestInterface.java)​ 2.1)类上注明为函数式接口有且只能有一个方法;

7.1.1 [Enterprise Library]缓存应用程序块场景和目标

缓存应用程序块为解决开发人员在缓存数据时所面对的绝大多数任务而设计。这些任务根据场景进行了组织&#xff0c;每个场景都给出了一个真实世界情况的示例&#xff0c;如添加条目到缓存&#xff0c;讨论了情况所需要的缓存功能&#xff0c;并展示了完成任务的代码。 根据场景组…

中式古建筑su模型大全

中式古建筑su模型大全 sketchup草图大师古建塔亭子寺庙名楼民居古建筑中式su模型素材 sketchup模型 古代建筑 古代房屋 古镇 古代街景 古代商业街 古代园林 阁楼 寺庙 含各类古建筑模型合集su模型 文件解压后大小&#xff1a;13G 含预览图 百度一下 云桥网络 平台huo取 素材…

Java学习总结:24

Lambda表达式 Lambda表达式指的是应用在单一抽象方法(SAM)接口环境下的一种简化定义形式&#xff0c;可以用于解决匿名内部类的定义复杂问题。 Lambda表达式的语法&#xff1a; (参数)->方法体相当于子类覆写抽象方法的方法体 例&#xff1a;Lambda表达式入门操作 packa…

【转】Flask安装

Flask 依赖两个外部库&#xff1a;Werkzeug 和 Jinja2 。 Werkzeug 是一个 WSGI&#xff08;在 Web 应用和多种服务器之间的标准 Python 接口) 工具集。Jinja2 负责渲染模板。 那么如何在你的电脑上安装这一切&#xff1f;虽说条条大道通罗马&#xff0c;但是最强大的方式是 vi…

OpenFeign服务接口调用

OpenFeign是什么? Feign是一个声明式的web服务客户端,让编写web服务客户端变得非常容易,只需创建一个接口并在接口上添加注解即可。 OpenFeign能干什么? Feign和OpenFeign两者区别 OpenFeign使用步骤

完美解决网站PNG图标在IE6下的透明显示

现在IE6虽然有些落后&#xff0c;但不少xp用户还是首选IE6浏览器&#xff0c;一款经典长久也标准快速的浏览器必然会有忠实的用户&#xff0c;png图标IE6下默认是不支持的&#xff0c;可以通过js代码实现&#xff0c;下面由一叶扁舟为大家整理&#xff0c;代码可直接下载一、下…

WPF Layout System

http://blog.tangcs.com/2009/05/23/wpf-layout-system/转载于:https://www.cnblogs.com/WarrenTang/archive/2009/05/23/1487622.html

ZBrush全面入门学习教程 Schoolism – Introduction to ZBrush

ZBrush全面入门学习教程 Schoolism – Introduction to ZBrush ZBrush全面入门学习教程 Schoolism – Introduction to ZBrush 时长:8小时|视频:1920X1080 。教程大小 2.6G 语言&#xff1a;英语中文字幕 百度一下 云桥网络 平台huo取 教程&#xff01; 这个课程非常适合那些…

Java学习总结:25

内建函数式接口 对于可能出现的函数式接口的方法最多只有4类&#xff1a;有参数有返回值、有参数无返回值、无参数有返回值、判断真假。 为了简化开发者的定义以及实现操作的统一&#xff0c;Java提供了一个新的开发包&#xff1a;java.util.function&#xff0c;并且在这个包…

Uva 3767 Dynamic len(set(a[L:R])) 树套树

Dynamic len(set(a[L:R])) Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 https://uva.onlinejudge.org/index.php?optioncom_onlinejudge&Itemid8&pageshow_problem&problem3767 Description 给你n个数&#xff0c;m次操作 Q x y 询问[x1,y]有多少个不同的数…

2022-2028年中国锂电池设备行业深度调研及投资前景预测报告

【报告类型】产业研究 【报告价格】4500起 【出版时间】即时更新&#xff08;交付时间约3个工作日&#xff09; 【发布机构】智研瞻产业研究院 【报告格式】PDF版 本报告介绍了中国锂电池设备行业市场行业相关概述、中国锂电池设备行业市场行业运行环境、分析了中国锂电池…

Cocos Studio的动画系统介绍

Cocos Studio介绍Cocos Studio是一套基于Cocos2D-x的免费游戏开发工具集&#xff0c;它能帮助开发者快速创建游戏资源&#xff0c;将大部分繁琐的游戏开发工作使用编辑器来快速制作&#xff0c;进一步帮助游戏开发者减短开发周期、提高开发效率。Cocos Studio本身不光只是针对[…

机器学习实战源码数据集

链接&#xff1a;https://pan.baidu.com/s/1Ss7x60VXdyQFYW9aiKS0Lg 提取码&#xff1a;9xj6 github下载地址&#xff1a; 转载于:https://www.cnblogs.com/YukiNote/p/11286106.html

blender硬表面建模渲染终极教程

blender硬表面建模渲染终极教程 Gumroad - The ULTIMATE Guide to Hard Ops and Boxcutter Gumroad-硬操作和切箱机的终极指南 教程大小 6G 1920X1080分辨率 语言:英语中文字幕 含案例源文件 云桥网络 平台获取教程 本教程共包含两大部分 第一部分 硬操作和Boxcutter菜单…

Java学习总结:26

线程与进程 进程是程序的一次动态执行过程&#xff0c;它经历了从代码加载、执行到执行完毕的一个完整过程&#xff0c;这个过程也是进程本身从产生、发展到最终消亡的过程。 线程是比进程更小的执行单位&#xff0c;线程是在进程的基础上进行的进一步划分&#xff0c;一个进程…

UINavigationController技巧一——修改返回按钮的标题

UINavigationController 一般push到另一界面后&#xff0c;返回按钮标题便是上一页面的title&#xff0c;但是对于push的第一页或者是上一页面没有title的&#xff0c;返回按钮标题便是默认back&#xff0c;如图所示 在本页面修改title没有用&#xff0c;试了很多办法终于找到 …

Idea groovy表生成实体类带注释

Idea groovy表生成实体类带注释 1.点开datasourse&#xff0c;打开idea带的数据库工具&#xff0c;具体添加数据库连接&#xff0c;这里不描述。 这时点击会生成一个poji 这时生成的pojo中是不带中文注释的&#xff0c;需要自己配置&#xff0c;往下&#xff1a; 3.根据图中的步…

fflush函数的深入理解

本人昵称sky&#xff0c;欢迎与各位多多交流学习 这样的c程序想必大家都不陌生&#xff0c;fflush()这个函数有清除输入输出缓存的功能&#xff0c;那很多人就会问了&#xff0c;什么是清除输入输出缓存呢&#xff1f; 其实就是我们在printf输出的时候&#xff0c;是先输出到一…

VS快捷键专题

如要初始化VS开发环境,使用如下命令:开始->运行->键入“devenv.exe /resetuserdata”。 ShiftAltEnter: 切换全屏编辑CtrlB,T / CtrlK,K: 切换书签开关CtrlB,N / CtrlK,N: 移动到下一书签CtrlB,P: 移动到上一书签CtrlB,C: 清除全部标签CtrlI: 渐进式搜索CtrlShiftI: 反向…

Maya阿诺德室外环境灯光照明和渲染技术学习视频教程

Maya阿诺德室外环境灯光照明和渲染技术学习视频教程 Maya and Arnold_ Exterior Lighting and Rendering 教程时长 1小时47分 大小 1.1G 1280X720分辨率 使用软件&#xff1a;Maya 、 Arnold、PS 共八大章 33小节 语言&#xff1a;英语机译中文字幕 作者推荐 翻译还算比较准确…

Java学习总结:27

多线程常用操作方法 线程的命名与取得 由于多线程的状态不确定&#xff0c;所以线程的名字就成为了唯一的分辨标记&#xff0c;则在定义线程名称时一定要在线程启动之前设置名字&#xff0c;尽量不要重名&#xff0c;且尽量不要为已经启动动的线程修改名字。 由于线程状态的不…