- hapi框架,用官網的簡介來講就是:Hapi是構建應用程序和服務的豐富框架,它使開發人員可以專一於編寫可重用的應用程序邏輯,而不是花時間構建基礎設施。
- 用本身的話簡單來講,就是個相似express,koa之類的node服務基礎框架。
- 此篇博客是在閱讀過掘金小冊的《基於 hapi 的 Node.js 小程序後端開發實踐指南》並實踐操做後,以此記錄實踐過程和踩過的坑。感興趣讀者可支持閱讀掘金小冊原版的內容。
1. 在./routes目錄下新建index.js
做爲路由的彙總,這樣之後只管在./routes下新建文件便可
"use strict"; const fs = require("fs"); const path = require("path"); const basename = path.basename(__filename); // 當前文件名 let routeArr = []; // 同步讀取當前目錄,並過濾除了當前文件的文件名數組 fs.readdirSync(__dirname) .filter(file => { // 過濾掉隱藏文件、當前文件、非js文件, 返回當前目錄下文件名稱數組 return ( file.indexOf(".") !== 0 && file !== basename && file.slice(-3) === ".js" ); }) .forEach(file => { // 引入路由模塊 let arr = require(path.join(__dirname, file)); // 彙總 routeArr.push(...arr); }); module.exports = routeArr;
1.新建test.js文件做爲測試
const GROUP_NAME = "test"; module.exports = [ // 純測試返回 接口 { method: "GET", path: `/${GROUP_NAME}`, handler: (request, h) => { const data = { message: "test" }; // 響應數據方式: // return h.response(data).code(200); return data; } }, ]
2.修改app.js
3.瀏覽測試結果
1.瞭解swagger
2.安裝swagger相關依賴
npm i hapi-swagger inert vision package
3.編寫配置插件
在./plugins 目錄下新建hapi-swagger.js
可參考官方示例node
const hapiSwagger = require("hapi-swagger"); const inert = require("inert"); const vision = require("vision"); const package = require("package"); module.exports = [ inert, vision, { plugin: hapiSwagger, options: { info: { title: "接口文檔", // 文檔的標題 version: package.version // 文檔的版本 }, // 定義接口以tags屬性爲分類【定義分類的大標題】,給./routes路由的配置config:tags使用 grouping: "tags", // 標籤,用於對應路由config定義的tags進行歸類 tags: [ { name: "test", description: "測試相關" } ], lang: 'zh-cn' // 文檔語言 } } ];
4.app.js入口文件配置swagger插件
5.訪問接口文檔
訪問地址:
http://localhost:3000/documentation
6.路由配置生產測試接口
修改測試路由文件 ./routes/test.js
再次訪問文檔地址