kanijf716 发表于 2024-1-15 13:17:59

使用 Hapi 和 TypeScript 为 Jamstack 构建 Rest API

有一种很好的方式将前端与后端分开,整个解决方案不必在单个整体中交付 - 并且所有这些都在同一时间进行。当 Jamstack 与 REST API 配对时,客户端和 API 可以独立发展。这意味着前端和后端并不是紧密耦合的,改变其中一个并不一定意味着改变另一个。 在本文中,我将从 Jamstack 的角度来了解 REST API。我将展示如何在不破坏现有客户端的情况下发展 API 并遵守 REST 标准。我将选择 Hapi 作为构建 API 的首选工具,并选择 Joi 来进行端点验证。数据库持久层将通过Mongoose进入MongoDB来访问数据。测试驱动的开发将帮助我迭代更改,并提供一种以更少的认知负荷快速获取反馈的方法。最后,我们的目标是让您了解 REST 和 Jamstack 如何提供软件模块之间高内聚、低耦合的解决方案。


这种类型的架构最适合具有大量微服务的分布式系统,每个微服务都位于各自独立的域中。我假设您具备 NPM、ES6+ 的应用知识,并且基本熟悉 API 端点。 该 API 将使用作者数据,包括姓名、电子邮件以及与喜爱的主题相关的可选 1:N(通过文档嵌入一对多)关系。我将 越南数据 编写 GET、PUT(带有 upsert)和 DELETE 端点。为了测试 API,任何支持的客户端都fetch()可以,所以我将选择Hoppscotch和 CURL。 我将保持本文的阅读流程就像教程一样,您可以从上到下阅读。对于那些宁愿跳到代码的人,可以在 GitHub 上查看它。本教程假设已安装Node 的工作版本(最好是最新的 LTS)和MongoDB 。 初始设置 要从头开始项目,请创建一个文件夹并cd进入其中 进入项目文件夹后,启动npm init并按照提示操作。

https://manchestermassage.net/wp-content/uploads/2024/01/photo_2024-01-15_09-30-40.jpg


这将package.json在文件夹的根目录下创建一个。 每个 Node 项目都有依赖项。我需要 Hapi、Joi 和 Mongoose 才能开始服务器框架 Joi:强大的对象模式验证器 Mongoose:MongoDB 对象文档建模 检查package.json以确保所有依赖项和项目设置均已就位。然后,向该项目添加一个入口点具有版本控制的 MVC 文件夹结构 对于此 REST API,我将使用带有控制器、路由和数据库模型的典型 MVC 文件夹结构。控制器将有一个版本,AuthorV1Controller以便在模型发生重大更改时允许 API 不断发展。Hapi 将有一个server.js和index.js使该项目可以通过测试驱动开发进行测试。该test文件夹将包含单元测试。 以下是整体文件夹结构现在,继续创建文件夹以及每个文件夹内的相应文件。 这是每个文件夹的用途 连接和 Hapi 服务器的配置信息。 controllers:这些是处理请求/响应对象的 Hapi 处理程序。

页: [1]
查看完整版本: 使用 Hapi 和 TypeScript 为 Jamstack 构建 Rest API