Swagger使用总结

1. Swagger是什么?

官方说法:Swagger是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。总体目标是使客户端和文件系统作为服务器以同样的速度来更新。文件的方法,参数和模型紧密集成到服务器端的代码,允许API来始终保持同步。

个人觉得,swagger的一个最大的优点是能实时同步api与文档。在项目开发过程中,发生过多次:修改代码但是没有更新文档,前端还是按照老旧的文档进行开发,在联调过程中才发现问题的情况(当然依据开闭原则,对接口的修改是不允许的,但是在项目不稳定阶段,这种情况很难避免)。

2. spring boot 集成 Swagger

目前维护的系统是基于springboot框架开发的,因此本文会详细描述springboot与swagger集成的过程。

spring-boot系统集成swagger需要进行如下操作:

  1. 添加maven依赖,需要在系统的pom中添加如下依赖:

     <dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger2</artifactId><version>2.2.2</version></dependency>
    
  2. 添加swagger配置文件,配置文件如下:

    @Configuration
    @EnableSwagger2
    public class SwaggerConfig {@Beanpublic Docket api() {return new Docket(DocumentationType.SWAGGER_2).select()  // 选择那些路径和api会生成document.apis(RequestHandlerSelectors.any()) // 对所有api进行监控.paths(PathSelectors.any()) // 对所有路径进行监控.build();}}

    通过注解EnableSwagger2声明Swagger的可用性,此处会定义一个类型为Docket的bean,
    关于docket类的说明如下:

    A builder which is intended to be the primary interface into the swagger-springmvc framework.Provides sensible defaults and convenience methods for configuration.

    Docket的select()方法会提供给swagger-springmvc framework的一个默认构造器(ApiSelectorBuilder),这个构造器为配置swagger提供了一系列的默认属性和便利方法。

  3. 测试

    通过访问:http://localhost:8080/your-app-root/v2/api-docs ,能测试生成的api是否可用。此时返回的是一个json形式的页面,可读性不好。可以通过Swagger UI来生成一个可读性良好的api页面。具体做法就是,在pom中添加相关依赖。如下:

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

    再次访问:http://localhost:8080/your-app-root/swagger-ui.html 就可以看到可读性较好的api文档页面。

  4. 注意:

    1. http://localhost:8080/your-app-root/v2/api-docs 中your-app-root指的你的wabapp的根路径,我目前的webapp就默认在根路径下,所以地址是:http://localhost:8080/v2/api-docs
    2. spring-mvc上引用swagger需要做其他相关的配置,具体请查看参考文献
    3. swagger对restful风格的api支持的比较好,非restful风格的api支持的不是很好,对于非restful风格的api或者其他语言(非java语言)可以采用 http://editor.swagger 编辑器来收工完成相关的API编写

Swagger使用总结相关推荐

  1. 前后端分离必备工具:Swagger快速搞定(整合SpringBoot详细教程)

    本文根据狂神教学视屏同步所做笔记 目录 一.Swagger简介 1. 前后端分离 2. Swagger引入 二.SpringBoot集成Swagger 1. 新建springboot项目 2. 导入S ...

  2. NSwagStudio for Swagger Api

    本案例主要说明如何使用NSwag 工具使用桌面工具快速生成c# 客户端代码.快速的访问Web Api. NSwagStudio 下载地址 比较强大.可以生成TypeScript.WebApi Cont ...

  3. Spring Boot集成Swagger导入YApi@无界编程

    接口APi开发现状 现在开发接口都要在类似YApi上写文档,这样方便不同的团队之间协作,同步更新接口,提高效率. 但是如果接口很多,你一个个手工在YApi去录入无疑效率很低. 如果是使用Spring ...

  4. oracle web API,在Web API程序中使用Swagger做接口文档

    #### 创建Web API程序 在VS2019中创建一个ASP.NET Web应用程序,选择Web API来创建RESTful的HTTP服务项目,构选MVC和Web API核心引用. #### 安装 ...

  5. MP实战系列(二)之集成swagger

    其实与spring+springmvc+mybatis集成swagger没什么区别,只是之前写的太不好了,所以这次决定详细写. 提到swagger不得不提rest,rest是一种架构风格,里面有对不同 ...

  6. Swagger 生成 PHP restful API 接口文档

    需求和背景 需求: 为客户端同事写接口文档的各位后端同学,已经在各种场合回忆了使用自动化文档工具前手写文档的血泪史. 我的故事却又不同,因为首先来说,我在公司是 Android 组负责人,属于上述血泪 ...

  7. 扔掉Swagger,试试这款功能强大,零注解侵入的API接口文档生成工具!

    欢迎关注方志朋的博客,回复"666"获面试宝典 介绍 smart-doc是一款同时支持JAVA REST API和Apache Dubbo RPC接口文档生成的工具,smart-d ...

  8. 你还在用Swagger?试试这个神器!

    点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! 作者:Java旅途/ 周明尧(本文来自作者投稿) 今天给大 ...

  9. 还在用Swagger生成接口文档?我推荐你试试它.....

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 JApiDocs是一个无需额外注解.开箱即用的SpringBoot ...

  10. 终于放弃了单调的 Swagger 了,选择了这款神器 Knife4j

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 来源:最美分享Coder toutiao.com/i6789135 ...

最新文章

  1. Selenium 下拉框处理
  2. 人工智能、网络空间对国家核安全的影响
  3. vscode给java项目传递args[]参数
  4. 编写一个爬虫类库——(一)想法
  5. 为什么选择.NETCore?
  6. 01-MySQL安装、配置和使用
  7. 浅析计算机科学在经济犯罪中的特征与表现
  8. php做抖音在微信中播放,微信小程序实现抖音播放效果的实例代码
  9. 有什么软件能一帧一帧的播放视频吗?KMPlayer
  10. 日志表数据量大查询慢问题
  11. Lua 源码学习笔记(2)字符串
  12. c 语言fabs函数的作用,c语言fabs是什么意思
  13. ZooZ推出应用内移动支付SDK
  14. Apache NIFI入门(读完即入门)
  15. -XX:+PrintHeapAtGC参数使用了解
  16. 黑苹果NVIDIA显卡驱动程序【WebDriver-378.05.05.25f16 +支持 macOS 10.12.6 Sierra (16G2016)版本】
  17. HTMLParser 使用详解
  18. NTLDR is missing和NTLDR is compressed的解决办法
  19. 防灌水php,自己借鉴写了个防灌水的函数
  20. VISTA无人驾驶模拟器;FinRL量化金融深度强化学习库;『深度神经网络应用』电子书;CUDA/TensorRT案例集锦;前沿论文 | ShowMeAI资讯日报

热门文章

  1. 采用cookie简单实现文章顶/踩功能
  2. 员工的12个需求及实现
  3. mui toast自定义样式
  4. 使用argparse对python脚本时运行时添加参数
  5. python 模拟登录验证码_Python模拟登陆 —— 征服验证码 3 CSDN
  6. typescript之nodejs开发
  7. C++之=deleted
  8. 深度学习自学(三十三):通过结构正则化深度聚类解决无监督域自适应问题
  9. 属性用途_onenote样式系列②:详解11种默认样式,附style属性值
  10. linux配置svn 报错,linux配置svn全过程及问题解决方案