hapi框架搭建記錄(二):路由改造和生成接口文檔

圖片描述

  • 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

clipboard.png

3.瀏覽測試結果

clipboard.png

接口文檔Swagger

1.瞭解swagger

這個hapi插件是筆者認爲強大好用的工具,能夠根據路由給的config配置,本身生成對應的接口文檔、測試接口數據 以及 配合Joi插件來校驗數據

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插件

clipboard.png

5.訪問接口文檔

訪問地址:http://localhost:3000/documentation

clipboard.png

6.路由配置生產測試接口

修改測試路由文件 ./routes/test.js

clipboard.png

再次訪問文檔地址

clipboard.png

相關文章
相關標籤/搜索