目录

Swagger简介 4

安装 4

一、 Node.js 安装 4

二、 node中http-server安装 4

三、 下载swagger-editor 4

四、 启动 swagger-editor 5

五、 使用浏览器访问http://localhost 5

使用 5

一、 编写API 文档: 7

二、 生成服务端代码: 8

三、 修改&运行服务端: 9

四、 创建&运行客户端: 11

1. 使用swagger-editor 的web 界面: 11

2. 使用swagger-editor生成的客户端代码 14

3. 使用chrome 的 postman 插件 15

Swagger简介

Swagger包括Swagger Editor, Swagger UI等很多部分,这里我们主要讲一下Swagger Editor。它是一个完全开源的项目,并且它也是一个基于Angular的成功案例。

在Swagger Editor中,我们可以基于YAML等语法定义我们的RESTful API,然后它会自动生成一篇排版优美的API文档,并且提供实时预览。简单说就是可以边编写API 边预览边测试。

在Swagger UI中,我们不能进行编写API ,但是我们可以预览或者测试。

安装

一、Node.js 安装

swagger 是用node写的,所以需要先按照node。安装nodejs后node和npm会一并安装。

windows 中 直接运行node-v8.1.2-x64.msi 即可完成安装(我已经下载好,位于: \\10.9.60.201\shares\)

二、nodehttp-server安装

任一cmd窗口,执行npm install -g http-server

三、下载swagger-editor

安装swagger-editor 有多种方式,

l 从github 下载安装。 这个方式可能行不通,因为下载通常很慢。

l 从官网下载swagger-editor.zip,解压即可。(已共享)

四、启动 swagger-editor

在swagger-editor的根目录打开cmd窗口,执行http-server ,默认为8080端口 ,若想更换端口则使用如下命令 http-server –p 80 或者修改:C:\Users\Administrator\AppData\Roaming\npm\node_modules\http-server\bin\http-server 中 84行 portfinder.basePort = 8080; 改为自己想要的端口。

五、使用浏览器访问http://localhost

结果:

说明:

界面左边是api 文件的 yaml 描述文件, 左边部分可以直接编辑API文档,编辑会立即更新到右边视图。右边是swagger-UI,可以查看文档,并直接进行API的测试。

使用

l 示例。

swagger 内置了很多个examples。通过File→Open Example… 打开各示例文档:

l 设置。

通过 Preference可以进行各种偏好设置:

一、编写API 文档:

我们可以参照swagger-editor 的示例,直接修改,然后生成自己的文档。

几个关键地方需要修改:

  • host 改为本地ip:port
  • basePath 改为项目名或模块名

swagger-editor 有自动纠错的功能,编写的API 文档应该保证没有错误。这样才能发布。

编写完毕后, 我们可以把它保存下来。 可选格式为yaml/json :

当然,我们也可以把写好的yaml/json 文档导入然后修改、测试。

二、生成服务端代码:

Swagger-editor的强大功能,在于其可以生成很多种语言的服务端/客户端代码 同时服务端代码中包含了Swagger-UI。 如下, 个人认为服务端中 其中 Node.js、Python Flask、Spring 语言的代码比较有价值,值得研究。

Spring 服务端代码适合后端开发人员,但是其生成的代码比较简单,而且不能直接使用, 需要做一些修改。

生成代码前, 我们确保已修改我们文档的关键地方:

host: localhost:8080

basePath: /projectABC

Swagger Petstore (Simple) 为例, 生成spring 服务端代码本质上是一个spring-boot 微服务。代码结构如下:

三、修改&运行服务端:

Spring 服务端: spring-server-generated.zip

src\main\java\io\swagger\api包下面的所有Api/ApiController结尾的类需要修改, 如PetIdApi 、 PetIdApiController 中所有的Void 改成 Pet。

ApiController结尾的类的public方法需要完成一些mock操作, 也就是—— // do some magic!

public ResponseEntity<Pet> petIdGet(@ApiParam(value = "ID of the pet",required=true ) @PathVariable("petId") String petId, HttpServletRequest request) {
    // do some magic!

System.out.println("petId = " + petId);
    Pet pet = new Pet();
    pet.setName("lk 111");
    pet.setBirthday(1234);

HttpHeaders headers = new HttpHeaders();
    headers.setContentType(MediaType.TEXT_PLAIN);
    ResponseEntity<Void> responseEntity = new ResponseEntity<>(headers, HttpStatus.OK);

ResponseEntity<Pet> ok = responseEntity.ok(pet);
    return ok;
}

修改完成后双击运行 项目的maven 构建: spring-boot 即可:

由于某些原因, swagger生成的Spring 服务端代码没有UI 界面, 也就是 没有 swagger-UI。 当然, 只要我们简单修改,就完成UI 功能:

将swagger-editor-UI.zip(已共享) 放到web根目录,稍作修改即可。

Swagger-editor 生成的nodejs 服务端代码(推荐), 不用修改就可以直接运行:

解压nodejs-server-server-generated.zip ,  然后cmd 进入nodejs-server-server 目录,npm start 即可运行,访问http://localhost:8080/docs 可以看到swagger-UI :

然后, 我们就可以进行测试等操作。

四、创建&运行客户端:

服务端启动之后, 就可以进行访问测试。访问测试有多种方式,

1 是直接使用swagger-editor 的web 界面

2 是使用swagger-editor生成的客户端代码

3 是使用浏览器插件, 比如chrome 的 postman 插件

下面分别进行介绍:

1.使用swagger-editor web 界面:

举个栗子,我们现在准备测试GET /pets/{id} :

右边视图 -> /pets/{id} -> Try this operation , 填好参数,然后点击“Send Request”

不过,发送请求进行测试之前,我们需要做两件事: 

1 由于我们是在浏览器中进行测试不同网站的接口。 我们实际上已经跨域,出于安全原因,浏览器默认不允许跨域。故我们需要做一些处理,比如安装一些插件。Chrome 上安装一个Allow-Control-Allow-Origin 拓展:

(chrome 拓展文件为www.cnplugins.com_fhbjgbiflinjbdggehcddcbncdddomop_4_7_2_.crx, 已共享, 如果无法安装, 那么需要从chrome 商店进行下载-安装, https://chrome.google.com/webstore/category/extensions?hl=zh-CN)

2 由于当前版本的swagger-editor 本身存在一些问题(发送的请求无法设置Content-Type请求头), 我们需要修改我们的后端代码:

src\main\java\io\swagger\api包下面的所有Api结尾的类需要修改,将其中每个方法的RequestMapping 部分的 consumes 去掉:

后端代码修改完需要重启。

处理完毕,我们就可以进行API 接口测试了:

2.使用swagger-editor生成的客户端代码

swagger-editor可以生成 很多语言版本的客户端代码, 个人认为其中 JavaScript、java 比较有研究价值的,

由于某些原因,部分语言可能无法生成代码:

如同swagger-editor生成的服务端代码, 其生成的客户端代码也可能有问题。需要做一些修改:

以生成的java代码为例, 需要将 src\main\java\io\swagger\api包下面的所有Api结尾的类需要修改, 其中的Void 改成 Pet。

src\test\java\io\swagger\client\api 包的类需要修改, 其中的Void 改成 Pet。

运行测试方法, 完成测试:

3.使用chrome postman 插件

下载安装postman,

运行:

设置请求头:

Postman 的具体用法请查看网络相关资料,此处不再赘述。

swagger 基础入门的更多相关文章

  1. spring boot集成redis基础入门

    redis 支持持久化数据,不仅支持key-value类型的数据,还拥有list,set,zset,hash等数据结构的存储. 可以进行master-slave模式的数据备份 更多redis相关文档请 ...

  2. js学习笔记:webpack基础入门(一)

    之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...

  3. 「译」JUnit 5 系列:基础入门

    原文地址:http://blog.codefx.org/libraries/junit-5-basics/ 原文日期:25, Feb, 2016 译文首发:Linesh 的博客:JUnit 5 系列: ...

  4. .NET正则表达式基础入门

    这是我第一次写的博客,个人觉得十分不容易.以前看别人写的博客文字十分流畅,到自己来写却发现十分困难,还是感谢那些为技术而奉献自己力量的人吧. 本教程编写之前,博主阅读了<正则指引>这本入门 ...

  5. 从零3D基础入门XNA 4.0(2)——模型和BasicEffect

    [题外话] 上一篇文章介绍了3D开发基础与XNA开发程序的整体结构,以及使用Model类的Draw方法将模型绘制到屏幕上.本文接着上一篇文章继续,介绍XNA中模型的结构.BasicEffect的使用以 ...

  6. 从零3D基础入门XNA 4.0(1)——3D开发基础

    [题外话] 最近要做一个3D动画演示的程序,由于比较熟悉C#语言,再加上XNA对模型的支持比较好,故选择了XNA平台.不过从网上找到很多XNA的入门文章,发现大都需要一些3D基础,而我之前并没有接触过 ...

  7. Shell编程菜鸟基础入门笔记

    Shell编程基础入门     1.shell格式:例 shell脚本开发习惯 1.指定解释器 #!/bin/bash 2.脚本开头加版权等信息如:#DATE:时间,#author(作者)#mail: ...

  8. [Spring框架]Spring AOP基础入门总结二:Spring基于AspectJ的AOP的开发.

    前言: 在上一篇中: [Spring框架]Spring AOP基础入门总结一. 中 我们已经知道了一个Spring AOP程序是如何开发的, 在这里呢我们将基于AspectJ来进行AOP 的总结和学习 ...

  9. [Spring框架]Spring AOP基础入门总结一.

    前言:前面已经有两篇文章讲了Spring IOC/DI 以及 使用xml和注解两种方法开发的案例, 下面就来梳理一下Spring的另一核心AOP. 一, 什么是AOP 在软件业,AOP为Aspect ...

随机推荐

  1. Linux 查看磁盘或文件夹及文件大小

    当磁盘大小超过标准时会有报警提示,这时如果掌握df和du命令是非常明智的选择. df可以查看一级文件夹大小.使用比例.档案系统及其挂入点,但对文件却无能为力.    du可以查看文件及文件夹的大小. ...

  2. Codeforces Round #323

    div1 C 这题的是给了一个无限循环的子数组,问有多少个 (l,s)l代表起点s代表长度的循环串,使得所有的在原串中的每位都小于等于另外这个串(l<=n,1<=s<n) 像这样,我 ...

  3. 导入javax.servlet。伺服登记无法解决:The import javax.servlet.MultipartConfigElement cannot be resolved

    解决办法:

  4. 【转】Requests 官方中文文档 - 快速上手

    迫不及待了吗?本页内容为如何入门 Requests 提供了很好的指引.其假设你已经安装了 Requests.如果还没有,去安装一节看看吧. 首先,确认一下: Requests 已安装 Requests ...

  5. mysql的指令

    mysql有一下几方面的特性: 1:多语言支持 2:可以移植性好 3:免费开源 4:高效(支持多线程,充分利用cpu资源,运行速度非常) 5:支持大量数据查询和储存 6:操作简单易于学习 其实数据库就 ...

  6. maven build 的时候,卡死在Downloading metadata的解决方法

    [INFO] [INFO] ------------------------------------------------------------------------ [INFO] Buildi ...

  7. numpy.random随机数生成

    seed 确定随机数生成器的种子 permutation 返回一个序列的随机排列或返回一个随机排列的返回 shuffle 对一个序列就地随机乱序 rand 产生均匀分布的样本值 randint 从给定 ...

  8. 从手机浏览器或者 APP 中跳转到微信并跳转到指定页原理及行业内幕详解

    相信很多朋友遇到过有些网站,可以直接通过一个连接就能让你的手机打开微信且跳转到某个指定的页面,许多程序员很好奇到底是怎么实现的,到处求这种方法的源码,在文本中我会介绍及剖析这种跳转实现的原理. 微信是 ...

  9. 读QT5.7源码(三)Q_OBJECT 和QMetaObject

    Qt meta-object系统基于三个方面:  1.QObject提供一个基类,方便派生类使用meta-object系统的功能:  2.Q_OBJECT宏,在类的声明体内激活meta-object功 ...

  10. bzoj3678 简单题

    题目链接 bitset #include<algorithm> #include<iostream> #include<cstdlib> #include<c ...