资讯专栏INFORMATION COLUMN

hapi框架搭建记录(二):路由改造和生成接口文档

opengps / 1257人阅读

摘要:框架,用官网的简介来说就是是构建应用程序和服务的丰富框架,它使开发人员能够专注于编写可重用的应用程序逻辑,而不是花时间构建基础设施。用自己的话简单来说,就是个类似,之类的服务基础框架。

</>复制代码

  1. hapi框架,用官网的简介来说就是:Hapi是构建应用程序和服务的丰富框架,它使开发人员能够专注于编写可重用的应用程序逻辑,而不是花时间构建基础设施。

  2. 用自己的话简单来说,就是个类似express,koa之类的node服务基础框架。

  3. 此篇博客是在阅读过掘金小册的《基于 hapiNode.js 小程序后端开发实践指南》并实践操作后,以此记录实践过程和踩过的坑。感兴趣读者可支持阅读掘金小册原版的内容。

路由汇总

</>复制代码

  1. 1. 在./routes目录下新建index.js
  2. 作为路由的汇总,这样以后只管在./routes下新建文件即可

</>复制代码

  1. "use strict";
  2. const fs = require("fs");
  3. const path = require("path");
  4. const basename = path.basename(__filename); // 当前文件名
  5. let routeArr = [];
  6. // 同步读取当前目录,并过滤除了当前文件的文件名数组
  7. fs.readdirSync(__dirname)
  8. .filter(file => {
  9. // 过滤掉隐藏文件、当前文件、非js文件, 返回当前目录下文件名称数组
  10. return (
  11. file.indexOf(".") !== 0 && file !== basename && file.slice(-3) === ".js"
  12. );
  13. })
  14. .forEach(file => {
  15. // 引入路由模块
  16. let arr = require(path.join(__dirname, file));
  17. // 汇总
  18. routeArr.push(...arr);
  19. });
  20. module.exports = routeArr;
测试路由

</>复制代码

  1. 1.新建test.js文件作为测试

</>复制代码

  1. const GROUP_NAME = "test";
  2. module.exports = [
  3. // 纯测试返回 接口
  4. {
  5. method: "GET",
  6. path: `/${GROUP_NAME}`,
  7. handler: (request, h) => {
  8. const data = { message: "test" };
  9. // 响应数据方式:
  10. // return h.response(data).code(200);
  11. return data;
  12. }
  13. },
  14. ]

</>复制代码

  1. 2.修改app.js

</>复制代码

  1. 3.浏览测试结果

接口文档Swagger

</>复制代码

  1. 1.了解swagger
这个hapi插件是笔者认为强大好用的工具,可以根据路由给的config配置,自己生成对应的接口文档、测试接口数据 以及 配合Joi插件来校验数据

</>复制代码

  1. 2.安装swagger相关依赖

</>复制代码

  1. npm i hapi-swagger inert vision package

</>复制代码

  1. 3.编写配置插件
  2. </>复制代码

    1. 在./plugins 目录下新建hapi-swagger.js
    2. 可参考官方示例

</>复制代码

  1. const hapiSwagger = require("hapi-swagger");
  2. const inert = require("inert");
  3. const vision = require("vision");
  4. const package = require("package");
  5. module.exports = [
  6. inert,
  7. vision,
  8. {
  9. plugin: hapiSwagger,
  10. options: {
  11. info: {
  12. title: "接口文档", // 文档的标题
  13. version: package.version // 文档的版本
  14. },
  15. // 定义接口以tags属性为分类【定义分类的大标题】,给./routes路由的配置config:tags使用
  16. grouping: "tags",
  17. // 标签,用于对应路由config定义的tags进行归类
  18. tags: [
  19. { name: "test", description: "测试相关" }
  20. ],
  21. lang: "zh-cn" // 文档语言
  22. }
  23. }
  24. ];

</>复制代码

  1. 4.app.js入口文件配置swagger插件

</>复制代码

  1. 5.访问接口文档
  2. </>复制代码

    1. 访问地址:http://localhost:3000/documentation

</>复制代码

  1. 6.路由配置生产测试接口
  2. </>复制代码

    1. 修改测试路由文件 ./routes/test.js

</>复制代码

  1. 再次访问文档地址

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/103939.html

相关文章

  • Vue现有项目改造为Nuxt项目

    摘要:好了,项目启动了,目录结构也清楚了,接下来就是整个现有项目的迁移了目前正在改造项目,文章尚未写完,会抽时间不定期的继续更新项目的改造过程及分享改造过程中遇到的问题 公司项目,最初只为了实现前后端分离式开发,直接选择了vue框架进行开发,然而现在项目基本完成了,发现蜘蛛根本就抓取不到网站数据,搜索引擎搜出来,都是一片空白没有数据,需要对项目做SEO优化。 本人第一次接触SEO的优化,完全...

    Invoker 评论0 收藏0
  • hapi框架搭建记录(一):初始化项目

    摘要:框架,用官网的简介来说就是是构建应用程序和服务的丰富框架,它使开发人员能够专注于编写可重用的应用程序逻辑,而不是花时间构建基础设施。用自己的话简单来说,就是个类似,之类的服务基础框架。同时全局环境直接获取。 showImg(https://segmentfault.com/img/bVbrV3m?w=572&h=350); hapi框架,用官网的简介来说就是:Hapi是构建应用程序和...

    aristark 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<