Swagger介绍

在Web开发中,后端开发者在完成接口开发后,需要给前端相应的接口使用说明,所以一般会写一份API文档。一般来说,有两种方式提供API接口文档,一种是利用插件在代码中自动生成,另一种是手工编写API文档。

Swagger就是为API文档设计而生的,其中包含一整套相关工具,既支持利用插件在代码中进行注解从而自动生成文档,也支持手工编写文档。两种方式各有优缺点:

  • 自动生成:省时,方便。只需在编写代码的时候添加一点注解就可以帮你自动完成文档的生成和部署。但是缺点也很明显,对于比较复杂的接口,或者在参数中使用自定义参数解析器的接口,它的支持就不太完美,换句话说,生成的文档很“死板”,里面可能有很多与预期不太符合的东西。(期待相关插件功能越来越完善,我相信有一天会完全取代手工编写的方式)。
  • 手工编写:灵活性高,能够完美的表达自己的想法。缺点就是需要额外的编写,维护和管理。

接下来我对两种方式分别做一下介绍。

自动生成

自动生成的方式还是比较容易的,对于不同的语言,有不同的插件以供使用。

  • 如果你的后台用node编写,可以使用koa-swagger-decorator来生成API文档。
  • 如果你的后台采用spring-boot方案,可以用springfox开发的一套插件来生成Swagger文档。具体可以参考这个教程
  • 对于其他技术路线,读者可以自行Google搜索是否有相关插件以供使用。

接下来我主要讲解一下手工编写的方式。

手工编写

后台开发者在完成接口开发后,需要进行如下流程:

  1. Swagger Editor中编写swagger.yaml文件(具体语法见官方教程,比较简单).
  2. 在Swagger Editor中将yaml文件导出为json文件。
  3. 利用Swagger UI渲染json文件,并且部署在服务器上。

其中前两点比较容易,有比较好的参考教程,一步步走下来就行。而利用Swagger UI渲染并部署,稍微麻烦一些,下面我将自己的做法给大家分享一下。

首先,在开始之前,可以看看我们项目组的一个示例。这个 Swagger 是我部署上去的,可以比较方便的查看,并且利用Try it out功能可以进行实时的测试,这也是利用Swagger编写API文档很大的一个好处。

接下来正式讲解如何使用Swagger UI渲染json文件,并且部署在服务器上。

Swagger-UI的官方仓库里明确说明了:他们在npm仓库里上传了两个npm模块,分别是swagger-uiswagger-ui-dist. 这两种方式都需要npm的支持,也就是说我们需要在服务器上运行一个node程序来专门为swagger服务,特别是当我们的服务器端不是用node.js写的时候,需要额外花费较大的精力和时间。那么我们有没有办法 不使用任何node.js库,直接将Swagger UI部署在云端呢? 答案当然是有的,我们只需要充分利用官方仓库中的/dist文件夹即可。具体步骤如下:

  1. 首先我们进入Swagger-UI的官方仓库,将其克隆至本地.
  2. 进入仓库中的/dist文件夹,用浏览器打开index.html文件,这个时候,应该可以看到官方的Swagger PetStoreAPI实例文件已经打开并且成功渲染。
  3. 将我们撰写的json文件上传到云端服务器上。确保能够远程访问。(例如您可以尝试我上传的http://121.42.175.137/swagger.json, 能够到达这个效果就算成功)
  4. 用编辑器打开2中的index.html文件,将onload function中的url:"https://petstore.swagger.io/v2/swagger.json"改为自己服务器上json文件的URL。
  5. 再次用浏览器打开index.html,成功访问到我们自己的API文档。
  6. dist文件夹整个上传到云端服务器,即全部完成。

这个方法是我自己摸索出来的,主要是利用了dist文件夹已经拥有渲染json文件的全部能力,这里包含了所有的html, css, js,于是我们可以直接拿来用了~当然这样也有一点缺陷,就是更新会不及时。官网上偶尔会更新dist文件夹,而我们的dist文件夹是不会自己更新的,但是也没有太大关系。

本机渲染

以上方法基于拥有远程服务器的前提。如果您想用此方法在本机上渲染json,同样也是有方法的,只需要利用http-server或其他的本地服务器程序,将json文件挂到本机某一端口(例如8080),然后将index.html中的url改为localhost:8080/xxx.json即可。

手动编写Swagger文档与部署指南的更多相关文章

  1. 运用swagger编写api文档

    一.什么是swagger 随着互联网技术的发展,前后端技术在各自的道路上越走越远,他们之间的唯一联系变成了api接口,api接口文档编程了前后端人员的纽带,而swagger就是书写api文档的一款框架 ...

  2. 懒得写文档,swagger文档导出来不香吗

    导航 前言 离线文档 1 保存为html 2 导出成pdf文档 3 导出成Word文档 参考 前言   早前笔者曾经写过一篇文章<研发团队,请管好你的API文档>.团队协作中,开发文档的重 ...

  3. 向架构师进军--->如何编写软件架构文档

    如果你对项目管理.系统架构有兴趣,请加微信订阅号"softjg",加入这个PM.架构师的大家庭 问:为什么要编写软件架构文档,它的好处是什么? 答: 有文档的架构有助于不同利益相关 ...

  4. 向架构师进军---&gt;怎样编写软件架构文档

    假设你对项目管理.系统架构有兴趣,请加微信订阅号"softjg",增加这个PM.架构师的大家庭 问:为什么要编写软件架构文档,它的优点是什么? 答: 有文档的架构有助于不同利益相关 ...

  5. Swagger文档转Word 文档

    GitHub 地址:https://github.com/JMCuixy/SwaggerToWord/tree/developer 原创作品,转载请注明出处:http://www.cnblogs.co ...

  6. 使用 Swagger 文档化和定义 RESTful API

    大部分 Web 应用程序都支持 RESTful API,但不同于 SOAP API——REST API 依赖于 HTTP 方法,缺少与 Web 服务描述语言(Web Services Descript ...

  7. Swagger文档转Word

    Swagger文档转Word 文档   GitHub 地址:https://github.com/JMCuixy/SwaggerToWord/tree/developer 原创作品,转载请注明出处:h ...

  8. Spring Boot:整合Swagger文档

    综合概述 spring-boot作为当前最为流行的Java web开发脚手架,越来越多的开发者选择用其来构建企业级的RESTFul API接口.这些接口不但会服务于传统的web端(b/s),也会服务于 ...

  9. 【Swagger2】解决swagger文档地址请求404的问题

    一.出现的问题背景 某个项目,本地启动后,访问swagger文档地址可以访问到, http://localhost:8203/doc.html.但是部署到开发环境就访问不到,报404资源找不到的问题 ...

  10. 使用 Laravel-Swagger 编写接口文档(php)

    使用 Laravel-Swagger 编写接口文档 Table of Contents Swagger 文档管理 官方网站:https://swagger.io/ 快速编写你的 RESTFUL API ...

随机推荐

  1. can't convert CUDA tensor to numpy. Use Tensor.cpu() to copy the tensor to host memory first.

    predict=predict.data.numpy() 这一行报错意思是:如果想把CUDA tensor格式的数据改成numpy时,需要先将其转换成cpu float-tensor随后再转到nump ...

  2. window监听节点改变的接口

    监听页面某个元素的属性变化 window.MutationObserver(callback) Mutation Observer API 用来监视 DOM 变动.比如节点的增减.属性的变动.文本内容 ...

  3. Delphi 关于RichEdit URL 颜色相关总结

    一.代码改变字体大小和颜色 1 procedure TForm1.Button1Click(Sender: TObject); 2 var 3 sNickName, sstr: string; 4 b ...

  4. window nginx php ci框架环境搭建

    下载nginx 后修改配置文件: location / { #try_files $uri $uri/ /index.php?$query_string; root C:\Software\serve ...

  5. wrangler 13 mwz 脱浆记录

    100度水泡了1个小时,一点没缩 70度水泡了3个小时,一点没缩 随后绝望,放洗衣机里洗了20min,缩了2cm 想再接再厉,放洗衣机30min,没缩 放外面晾干,看晾干以后多长吧 --------- ...

  6. 一道网红题:Java值传递,答案开始看了不太懂,是不是涉及到了匿名类的实例化?

    题目如下:看起来是值传递的考察... public class Test{ public static void main(String[] args){ int a = 10; int b = 10 ...

  7. Axure RP Extension for Chrome 0.6.2安装和详解

    1.当我们用网页访问一个本地页面时就会出现这种问题,提示你要安装浏览器的扩展程序包,以下有搜狗浏览器如何安装,qq浏览器 ​

  8. Github说明--如何在Github里面上传自己的代码

    1.注册一个账号 这是必须的啦!不清楚注册步骤的,可以去看看我之前的博客,里面的步骤也是挺详细的呢! 2.进入到用户主界面 我们会看到这样的一个+标识: 选择其中的New Repository选项,点 ...

  9. 自用nodejs安装笔记

    下载Nodejs 进入Nodejs官网https://nodejs.org/zh-cn/ 下载 安装Node.js 检查Nodejs和npm包管理器是否安装成功 用管理员打开cmd控制台 命令行输入n ...

  10. (原创)【B4A】一步一步入门08:ListView,列表、单行、双行、双行带图片、列表项样式(控件篇04)

    一.前言 本篇教程,我们来讲一下常用的控件:ListView(列表控件). 目前官方已经不推荐使用默认的ListView控件,而是推荐另一款功能更强大的ListView:xCustomListView ...