Fastify 是一个快速、简单和低开销的 Node.js Web 框架,是现代化的 Node.js Web 框架之一。它的设计目标是在最少的开销和最大的灵活性之间提供高效率。本文将介绍使用 Fastify 来简化 Node.js API 开发的过程,并提供几个例子来说明这些概念。
安装 Fastify
在开始使用 Fastify 之前,需要先安装它。可以使用 npm (Node.js 包管理器) 从 CLI 安装 Fastify 。在您的项目根目录中执行以下命令来安装 Fastify,命令如下:
npm install fastify
这应该在您的 node_modules
文件夹中安装 Fastify。
快速开始
让我们从一个简单的 Hello World 实例开始:
-- -------------------- ---- ------- ----- ------- - --------------------- ---------------- ----- --------- ------ -- - ------ ------ -------- --- -------------------- ----- -------- -- - -- ----- - ------------------ --------------- - ------------------- --------- -- ------------ ---
在这个示例中,Fastify 实例被创建并反转用于监听来自浏览器的请求。 注册路由并将get路由与请求正文关联。
路由参数
像其他 Web 框架一样,Fastify 提供了实现路由参数的方式。 示例代码:
fastify.get('/:name', async (request, reply) => { return `Hello ${request.params.name}!`; });
这个路由可以响应包含一个名为"name"的动态路径段的请求。例如,当浏览器向 http://localhost:3000/John
发送请求时,返回 "Hello John!"。
异步请求处理
Javascript 是单线程的,因此它不会阻塞 I/O 操作。 在处理 CPU 密集型任务时,让它们异步化是很有用的,下面是使用 Fastify 处理异步请求的示例:
fastify.get('/api/ping', async (request, reply) => { const response = await callMyLongRunningFunction(); reply.header('Content-Type', 'application/json').code(200); return response; });
在这个示例中,请求处理程序调用了 callMyLongRunningFunction()
,该函数是一个会阻塞事件循环的耗时任务。它使用 async / await 的一些优点来等待 promise 的解决。请求的回复头被设置为 JSON,并使用 status code "200" 来向浏览器发送 OK。
使用中间件
Fastify 支持将多个路由应用到单个路由的能力。 下面是 SSG( Server-Side Generated)又称后端渲染的实现方法:
-- -------------------- ---- ------- ---------------------------- ----- --------- ------ -- - ----- -------- - ----- --------------------------------- ---------------------- - ----------- --- --- ---------------------------- ----- --------- ------ -- - ----- -------- - ----- --------------------------------- ---------------------- - ----------- --- ---
这里两个路由都与算法操作耗时的函数联动组成了后端渲染。它使用一个共用的模板来执行操作,提供了公用模板。Fastify 支持从插件中注册中间件Function并启动某个路由,中间件的实现如下所示:
const someMiddleware = async (request, reply) => { /* 出于某种原因,具体处理内容并不重要 */ } fastify.get('/protected', { preValidation: [someMiddleware] }, async (request, reply) => { reply.send({ message: "Successful login!" }); });
这个路由处理程序用于保护另一些保护着路由,需要验证。其他路由具有中间件,从而将通用代码复用。
结论
使用 Fastify 将帮助开发人员快速构建 Node.js API。 具有清晰的路由语法、中间件功能和异步处理的能力,除了它还提供了一下许多基本的功能。 通过本文所述的内容已经我们掌握了如何使用 Fastify 来简化 Node.js API 开发的过程,并且也是了解您 Node.js及RESTful的一个好的开端。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/670b9c0466ef9cf37faa7c61