express+ejs+swagger-ui-dist 打造及時更新的rest api 線上介面文件
阿新 • • 發佈:2018-12-24
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'); });