1. 程式人生 > >express+ejs+swagger-ui-dist 打造及時更新的rest api 線上介面文件

express+ejs+swagger-ui-dist 打造及時更新的rest api 線上介面文件

Swagger 是restFul Api介面文件編寫神器,這裡介紹一個在nodejs環境下,應用express框架實現一個多專案介面文件伺服器,並在雲伺服器上實現及時線上更新。

一、建立express工程

應用express 腳手架建立一個基於ejs模板引擎的工程,進入工程目錄安裝專案依賴

express restapi --view=ejs
cd restapi
cnpm install

二、新增依賴庫swagger-ui-dist

npm install swagger-ui-dist --save

安裝完成後我們的目錄結構是這樣的


我們在專案的node_modules 資料夾中找到我們剛才安裝的swagger-ui-dist的依賴庫資料夾,將index.html 複製一份到views檔案下,並將其改名為api.ejs


我們將api.ejs的檔案中的內容作如下修改



三、建立介面文件路由

我們在public目錄下新建一個swagger目錄,這裡目錄下放置我們寫好的swagger文件,比如api_1.json和api_2.yaml。分別是兩個專案的介面設計文件。

接下來我們修改一個routes目錄下的index.js路由文件,我們新增兩個路由,/api1   /api2, 通過url引數向ejs模板傳遞對應的介面文件地址。

var express = require('express');
var router = express.Router();

/* GET home page. */
router.get('/', function(req, res, next) {
  res.render('index', { title: 'Express' });
});

/* 專案一的介面文件 */
router.get('/api1', function(req, res, next) {
  res.render('api', { url: './swaager/api_1.json' });
});


/* 專案二的介面文件*/
router.get('/api2', function(req, res, next) {
  res.render('api', { url: './swagger/api_2.yaml' });
});


module.exports = router;

四、啟動伺服器

在終端執行 npm start 並可以通過訪問 localhost:3000/api1  和 localhost:3000/api2訪問兩個專案對應的文件了。

五、應用阿里雲搭建公網伺服器

如果我們的swagger文件是放在github,coding來託管的,我們可以利用他們的webhook功能實現及時更新,同樣在routes/index.js中新增一個路由,訪問時執行shell命令,我們的目標是在public/swagger資料夾下執行「git pull」

var process = require('child_process')

/* 應用git webhoot 呼叫該介面執行 shell  */
router.get('/pull', function(req, res, next) {

  // 將swagger工程執行push命令列,伺服器端自動執行git pull 及時儲存更新
  process.exec('cd public/swagger;git pull');

  res.send('git pull ok');
});