Fastify 是一个快速且低开销的 Web 框架,更适合用于构建高性能的 REST APIs。Fastify 可以通过插件机制来扩展其功能,同时还有优秀的文档和开发者社区支持,是构建现代 Web 应用程序的理想选择。本文将介绍在 Node.js 中使用 Fastify 框架创建 REST APIs 的方法。
安装 Fastify
使用 npm 包管理器安装 Fastify:
npm install fastify
创建一个基础应用程序
创建一个 app.js 文件,在其中导入 Fastify 库,创建一个 Fastify 实例,并在实例上设置一个简单的路由处理程序:
-- -------------------- ---- ------- ----- ------- - -------------------- ---------------- -------- --------- ------ - ------------ ------ ------- -- -- -------------------- -------- ----- -------- - -- ----- - ---------------- --------------- - ------------------- --------- -- ------------ --
使用 fastify.get()
方法来设置路由。第一个参数是 URL 路径,第二个参数是路由处理程序,在此处是一个简单的匿名函数。reply.send()
方法用于向客户端发送响应。
添加路由参数和查询参数
Fastify 非常容易处理 URL 参数和查询参数。在下面的示例中,路由处理程序使用 request.params
和 request.query
对象来访问 URL 参数和查询参数。
fastify.get('/movie/:id', function (request, reply) { const id = request.params.id const title = request.query.title reply.send({ id, title }) })
在将请求发送到此 URL (/movie/1234?title=Fastify
) 时,将响应 { "id": "1234", "title": "Fastify" }
。
添加路由前缀
Fastify 允许将路由前缀添加到所有路由上。这对于组织和管理大型路由非常有用。
const movies = require('./movies') fastify.register(movies, { prefix: '/api/movies' })
在上面的示例中,我们将所有路由都添加了 /api/movies
前缀。我们还将这些路由放在一个单独的模块文件中 (movies.js
)。模块文件的示例代码如下所示:
-- -------------------- ---- ------- -------------- - -------- --------- ----- ----- - ---------------- -------- --------- ------ - ------------ -------- ---- ------- -- -- ------------------- -------- --------- ------ - ----- -- - ----------------- ------------ -------- ------ ---- --- ------ -- -- ------ -
使用插件
Fastify 插件是一个 Node.js 模块,在 Fastify 实例上注册以添加额外的功能。Fastify 插件是可重用的,并可以通过 npm 包来共享和安装。我们将使用一个名为 fastify-cors
的插件,以处理跨域资源共享(CORS)问题。
npm install fastify-cors
const fastify = require('fastify')() fastify.register(require('fastify-cors')) // 后面的代码与前面的示例相同
添加验证
Fastify 具有内置的验证功能,可用于验证请求正文、查询参数和 URL 参数。验证规则可以通过 JSON Schema 编写。在下面的示例中,我们将创建一个验证规则,以确保电影对象包含必要的属性。
-- -------------------- ---- ------- ----- ------- - -------------------- ----- ------ - - ----- --------- --------- --------- ------------ ----------- - ------ - ----- -------- -- --------- - ----- -------- -- ----- - ----- -------- - - - ---------------------- - ------ -- -------- --------- ------ - ----- ----- - ------------ -- ----------------- ------------ -------- ------ ----- ------------- -- --
在上面的示例中,我们使用 fastify.post()
方法来设置 POST 路由。我们还在路由配置对象中传递了一个 JSON Schema,以验证请求体是否符合规范。
添加错误处理程序
Fastify 具有内置的错误处理程序,可以捕获和处理任何路由处理程序中遇到的错误。在下面的示例中,我们将添加一个错误处理程序,以处理所有路由中遇到的错误。
-- -------------------- ---- ------- ----- ------- - -------------------- ----------------------------------- --------- ------ - ---------------------- -------- --------- --- ------ -- -- -------------------------------- ------- -------- ------ - ----- ---------- - ---------------- -- --- ----------------------------- -------- ------------- -- -- -- -------------
在上面的示例中,我们使用 fastify.setNotFoundHandler()
方法来处理所有 404 请求,使用 fastify.setErrorHandler()
方法来处理任何其他出现的错误。我们还定义了一个简单的错误消息格式。
结论
Fastify 是一个出色的 Web 框架,具有高性能、可扩展性和灵活性。在本文中,我们介绍了如何使用 Fastify 创建 REST APIs,并涵盖了路由、参数、验证、错误处理程序和插件等所有关键方面。快速进阶并开始使用 Fastify!
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6773874c6d66e0f9aae44013