Fastify 是一款强大的 Node.js Web 框架,它兼具高性能和低开销的特点,适用于快速构建 RESTful API 的场景。在本文中,将介绍如何快速入门 Fastify 框架,包括安装、基本用法和实战演示,以及一些注意事项。
安装
使用 NPM 即可安装 Fastify 框架,具体命令如下:
npm install fastify --save
基本用法
创建实例
在使用 Fastify 框架之前,先要创建一个实例。可以使用简单的方式创建:
const fastify = require('fastify')();也可以传递一些选项给实例:
const fastify = require('fastify')({
logger: true
});定义路由
在 Fastify 框架中,路由是通过 HTTP 方法和 URL 路径来定义的。下面是一个简单的 GET 请求的例子:
fastify.get('/', async (request, reply) => {
return { hello: 'world' };
});启动服务器
创建好实例并定义好路由之后,使用以下代码来启动服务器:
fastify.listen(3000, (err, address) => {
if (err) {
fastify.log.error(err);
process.exit(1);
}
fastify.log.info(`server listening on ${address}`);
});错误处理
Fastify 框架有自己的错误处理方式,其中一种是使用 reply 对象的 code 和 message 来处理错误:
fastify.get('/error', async (request, reply) => {
reply.code(500).send({ error: 'Internal Server Error' });
});实战演示
首先安装相关库
npm install mysql2 sequelize fastify-fastify-session fastify-cors helmet under-pressure
导入相关包
const fastify = require("fastify")({ logger: true });
const helmet = require("helmet");
const cors = require("fastify-cors");
const underPressure = require("under-pressure");
const session = require("fastify-session");
const mysql2 = require("mysql2");
const Sequelize = require("sequelize");配置 Fastify
-- -------------------- ---- ------- ------------------------- -- ------ -------- ----------- ---------------------------------------------- -- -------- ---- ---------------------- ---- ------------------------- - ------------------ ----- ------- ------------------- ------- - ------- ----- -- ---
连接数据库
const sequelize = new Sequelize("mysql://root:@localhost:3306/kurd_tour", {
dialect: "mysql",
logging: false,
});初始化模型
const SceneryModel = require("./models/scenery")(sequelize, Sequelize);
const UserModel = require("./models/user")(sequelize, Sequelize);
sequelize.sync({ alter: true }).then(() => {
console.log("models synced");
});注册路由
-- -------------------- ---- -------
-- ---- -----
---------------- ----- --------- ------ -- -
------ - -------- -------- -- ---- ---- ----- --
---
-- ---- -- -----
--------------------------- ----- --------- ------ -- -
----- - ------ -------- - - -------------
----- ---- - ----- -------------------
------ - ------ ----- --
-------- ---------------
---
-- ------ -- ------------------------------ -
----- --- -------------- ----- -- ------------
-
-------------------- - -
--- --------
------ -----------
----- ----------
--
------ -----
---
-- ---- -- -----
--------------------------- ----- --------- ------ -- -
----- - ------ --------- ---- - - -------------
----- ---- - ----- ------------------
------
-----
---------
----- -------
---
-------------------- - - --- -------- ------ ---- --
------ -----
---
-- ---- --- -----
--------------------------- ----- --------- ------ -- -
--------------------------
--------------------
---
-- --- ------- ---- -----
---------------------- ----- --------- ------ -- -
----- - ---- - - ----------------
-- ------ -- --------- -
----- --- ---------- ----------------
-
----- ----------- - ----- -------------------
------ - --- ------- --
-------- ---------------
---
------ ------------
---
-- ------ -------
-------------
-----------------
-
----------- -
---------------
------------------ -----
----------------- ----------
------------ ----------
---
--
--
----- --------- ------ -- -
----- - ---- - - ----------------
-- ------ -- --------- -
----- --- ---------- ----------------
-
----- ------- - ----- ---------------------
----------------
------- --------
---
------ --------
-
--
-- --- --- ---------
----------------------------- ----- --------- ------ -- -
----- --------- - ----- ----------------------
-------- ------------
---
------ ----------
---
-- --- - ------- -- --
--------------------------------- ----- --------- ------ -- -
----- - -- - - ---------------
----- ------- - ----- ------------------------- - -------- ----------- ---
------ --------
---
-- ---- - -------
--------------------------------------- ----- --------- ------ -- -
----- - ---- - - ----------------
-- ------ -- --------- -
----- --- ---------- ----------------
-
----- - -- - - ---------------
----- ------- - ----- --------------------------
-- ---------- -
----- --- -------------- --- --------
-
----- -------------------------------
------ --------
---
-- ------- - -------
------------------------------------------ ----- --------- ------ -- -
----- - ---- - - ----------------
-- ------ -- --------- -
----- --- ---------- ----------------
-
----- - -- - - ---------------
----- ------- - ----- --------------------------
-- ---------- -
----- --- -------------- --- --------
-
----- ----------------------------------
------ --------
---启动 server
fastify.listen(3000, (err, address) => {
if (err) {
fastify.log.error(err);
process.exit(1);
}
console.log(`server listening on ${address}`);
});注意事项
- Fastify 框架适合开发高性能、低延迟的 RESTful API。
- 要注意错误处理方式,Fastify 框架有自己的错误处理方式,详见官方文档。
- 要注意身份认证和授权的相关逻辑,以免出现安全问题。
- 通过使用优秀的第三方库能够为 Fastify 提供更多的功能,如数据库连接、头信息处理、路由认证等。
通过本文的介绍,可以快速了解并入门 Fastify 框架,通过实际的演示代码,也可以获得一些实用的技巧和注意事项。希望读者可以从中获益,并在实际项目中能够选用和使用 Fastify 框架。
Source: FunTeaLearn,Please indicate the source for reprints https://funteas.com/post/67972f46504e4ea9bde39787