美文网首页web 前端iOS开发指南一起学起来
Swagger UI教程 API 文档神器 搭配Node使用

Swagger UI教程 API 文档神器 搭配Node使用

作者: Damonwong | 来源:发表于2016-01-18 23:35 被阅读68720次

    在团队开发中,一个好的 API 文档可以减少很多交流成本,也可以使一个新人快速上手业务。

    前言

    • swagger ui是一个API在线文档生成和测试的利器,目前发现最好用的。
    • 为什么好用?Demo 传送门
      • 支持API自动生成同步的在线文档
        • 这些文档可用于项目内部API审核
        • 方便测试人员了解API
      • 这些文档可作为客户产品文档的一部分进行发布
        • 支持API规范生成代码,生成的客户端和服务器端骨架代码可以加速开发和测试速度

    总结一句话就是好用,逼格高。下面我将总结一下如何快速在本地搭建一个基于Node和Swagger UI的 API 的文档工具

    环境搭建

    • 下载Swagger UI(也可以直接下载 zip 文件)
    git clone https://github.com/swagger-api/swagger-ui.git
    
    • 安装 express
    • 创建一个空文件夹node_app
    mkdir node_app
    
    • 初始化 node ,创建package.json文件()
    ➜  ~ ✗ >cd node_ap
    ➜  ~/node_app ✗ >npm init
    // 下面的看你心情填写
    name: (node_app) node_app
    version: (1.0.0)
    description:
    entry point: (index.js)
    test command:
    git repository:
    keywords:
    author:
    license: (ISC)
    
    • 安装 express
    ➜ ~/node_app git:(master) ✗ >npm install express --save
    
    • 创建 index.js
    ➜  ~/node_app git:(master) ✗ >vim index.js
    
    • 把下面代码贴如 index.js 中
    var express = require('express');
    var app = express();
    app.get('/', function (req, res) {
      res.send('Hello World!');
    });
    
    app.listen(3000, function () {
      console.log('Example app listening on port 3000!');
    });
    
    • 在 node_app 中创建空目录 public
    ➜  ~/node_app git:(master) ✗ >mkdir public
    ➜  ~/node_app git:(master) ✗ >cd public
    
    • 修改路由
    ➜  ~/node_app/public git:(master) ✗ >vim ../index.js
    //在文件第三行插入下面这句话
    app.use('/static', express.static('public'));
    
    • 把下载好的Swagger UI 文件中dist 目录下的文件全部复制到 public 文件夹下。


      目录结构
    • 开启 node
    ➜  ~/node_app git:(master) ✗ >node index.js
    

    到此为止,你已经把官方的 demo 在本地配置好了。当然你也可以吧这个搭建在服务器上

    编写文档并发布

    • 使用Swagger Editor编写 API 文档
      • Swagger Editor 上的是基于 yaml 的语法,但是不用害怕,看着官方的 demo 看个10分钟就会了。
    • 导出 test.json 文档


      导出方式
    • 把 test.json 放到 node_app/public 目录下。
    • 利用编辑器修改 url = "http://petstore.swagger.io/v2/swagger.json";url = "/static/test.json";
    • 重启 node 服务,浏览器中打开http://localhost:3000/static/index.html就是你自己写的 api 文档了

    效果图

    自己写的 API 接口 PUT请求 GET请求 POST 请求 DELETE 请求

    相关文章

      网友评论

      • 0863122bb195:请问作者,有没有遇到跨域的问题,怎么解决的
        12345:提供doc.json的服务器配置cors
        a荷包蛋:对我也是遇到了这个问题,然后百度搜了一大堆还是没有解决,不知道大神是否解决可以请教一下吗
      • 阿飞飞飞吧:你好,刚开始学习使用swagger,自己写的json文件,但是在swagger生成的页面输入参数,点击运行无法使用,我写的是get请求,输入一个id参数,但是总是报错 TypeError: Failed to fetch;不知道怎么解决,急求谢谢!
      • 18b4eaf9eced:《Swagger UI教程API 文档神器搭配Node使用- 简书》写的挺不错的,已经收藏了。

        源码解析:http://tinyurl.com/ycqn86hj


        8afe04d66ee7:写的非常六六六啊

        加油!
      • e2045f5afa56:请问 现在 swagger ui 已经是3.0 的版本了 在dist 文件夹下面的 内容也已经变了 还可以按照作者的方法 来操作么?
        e2045f5afa56:@Damonwong 有 demo 例子么?
        e2045f5afa56:@Damonwong 作者 的swiggerUI 是哪个 版本的 是 2. 0的?
        Damonwong:@Silent张 那按照新得来吧。
      • a36c0317e2f6:写的很好,谢谢。
      • e1b54cf5c039:这个页面样式要怎么调整下?弄出来默认都是一行的 参数返回比较长的时候 看起来很不方便
      • 温木先生:入门好文章,谢谢
      • fighting2007:swagger是我用过最好用的,只是编写相关的json比较麻烦,又不想集成在代码中。不过可以在网站(www.sosoapi.com)上在线表单方式编写swagger-ui对应的json哈,编辑简单而且可以在线预览和导入导出,挺方便的
      • 卿伊111:部署在已有项目中, 获取示例中线上的JSON没有问题, 但是用本地的json(跟示例一模一样),渲染不出来,求解答
        卿伊111:@卿伊111 解决了,是我手贱把JSON格式化了一下
      • 账号差点被盗:Cannot GET /static/index.html
        怎么回事呢?步骤都是一步一步来的,到最后输入url链接的时候就出现了这个错误
        雯子cyan:@账号差点被盗 请问如何解决,我也遇上了
        账号差点被盗:已经解决问题了,多谢
        Damonwong:@账号差点被盗 可能是路径不对吧
      • lei_lei:我按照教程走了一遍,最后的ui里没看到curl和request url,这个怎么做出来的啊?还有能加request example吗? 试了x-example, x-examples, 貌似没用。请指教一下啊,多谢~~
        lei_lei:@Damonwong curl 和request url 是点try it out 之后返回的。 request sample 也可以加啦,多谢啦!
        Damonwong:@lei_lei 资源包的问题吧。
      • perry_zp:很想知道nodejs服务能不能自动生成swagger ui的api,而不需要人为的去填写生成api文档
        Damonwong:@liuguangqiang 可以看下官方文档。我不是后台开发不是很清楚。我看文档都是支持自动导出的
        guangqiang:@Damonwong 请问用什么来自动生成呢?第一次使用swagger,还不太清楚
        Damonwong:@perry_zp 可以的。
      • 2ccdc993d83f:部署之后不知道该如何使用,java web 新手求教
      • 2ccdc993d83f:我部署之后是英文版的,怎么弄成汉化版的呢,急
        2ccdc993d83f:@Damonwong 哈哈,搞出来了,然后是不是swagger edit也要部署到本地
        2ccdc993d83f:@Damonwong :unamused: 能说下吗
        Damonwong:@liyanhua 学会看英文
      • 熊猫猫超人:学习了~~ :heart_eyes:
      • c80df564ab56:错别字改一下:heart_eyes:

      本文标题:Swagger UI教程 API 文档神器 搭配Node使用

      本文链接:https://www.haomeiwen.com/subject/acvkkttx.html