近年来,随着前端技术的飞速发展,越来越多的人开始热衷于开发 RESTful API。使用 Fastify 和 PostgreSQL 结合开发 RESTful API 成为了一种常见的方式。Fastify 是一个高效、适用于 Web 和 HTTP 的框架。而 PostgreSQL 是一款强大的关系型数据库。在本篇文章中,我们将会深入探讨如何使用 Fastify 和 PostgreSQL 构建 RESTful API。
准备工作
在开始之前,你需要安装 Node.js 和 PostgreSQL。还需要新建一个数据库。
我们需要使用以下库:
- fastify
- pg
- fastify-cors
- fastify-auth
- bcryptjs
运行以下命令安装这些库:
npm install fastify pg fastify-cors fastify-auth bcryptjs --save
创建服务器
我们将会创建一个服务器以监听来自客户端的请求,并对这些请求作出响应。具体实现过程如下:
const fastify = require('fastify')({ logger: true }) fastify.listen(3000, err => { if (err) { fastify.log.error(err) process.exit(1) } })
我们新建了一个 Fastify 实例,并让其在本地的 3000 端口上运行。
连接数据库
我们需要连接数据库来存储用户信息。我们可以通过 pg 包完成连接。
定义一个连接字符串:
const connectionString = 'postgres://user:password@localhost:5432/database'
创建一个池,此池将在整个应用程序中被重复使用。
async function dbConnect() { const pool = new Pool({ connectionString }) const client = await pool.connect() return client }
配置路由
对于一个 Restful API 来说,所谓的接口就是指的路由。我们来创建路由、对请求做出响应,以及添加必要的验证。我们创建以下 5 个路由:注册、登录、获取当前用户、注销用户和更改密码。
注册
我们需要使用 POST 方法来注册新用户。为此,我们将创建一个 post 路由。该路由将创建一个新用户对象并将其存储在数据库中。
首先,我们定义一个路由:
-- -------------------- ---- ------- ------------------------- ----- --------- ------ -- - --- - ----- ------ - ----- ----------- ----- - ------ -------- - - ------------ ----- ---- - ----- --------------------- --- ----- --- - ----- ------------- ------- ---- ------------ --------- ---------- --- --------- --- ------- ------- ----- - ---------------- ----------------------- - ----- ----- - ---------------- - --
登录
我们需要使用 POST 方法来登录用户。为此,我们将创建一个 post 路由。该路由将验证用户的凭据是否正确,如果正确,则发放 Token 令牌。我们将使用 bcryptjs 密码哈希算法。
首先,我们定义一个路由:
-- -------------------- ---- ------- ---------------------- ----- --------- ------ -- - --- - ----- ------ - ----- ----------- ----- - ------ -------- - - ------------ ----- - ---- - - ----- ------------- ------- --- ------ -------- ---- ----- ----- ---------- ------- - ---------------- ----- ---- - ------- -- ----- -- ------ ------------------------ ---------------- - ----- ----- - ---------- ------ ---------- -- --------- - ---------- ---- -- ------ - ----- - - ---- - ----- --- ------- - - ----- ----- - ---------------- ------------------------------- ----- -- ---------- - --
获取当前用户
我们需要使用 GET 方法来获取当前的用户。为此,我们将创建一个 get 路由。
首先,我们需要在路由定义中使用 fastify-auth 库对用户进行身份验证:
-- -------------------- ---- ------- ----------------------------------------- -------------------------------- ----- --------- ------ -- - --- - ----- ------------------- - ----- ----- - ---------------- --------------- - --
然后定义一个路由 handler:
-- -------------------- ---- ------- ----------------------- - ----------- ---------------------- -- ----- --------- ------ -- - --- - ----- ----- - ------------------------------------- ----- ----- ------- - ----------------- --------- ----- ------ - ----- ----------- ----- - ---- - - ----- ------------- ------- --- ----- ---- ----- ----- ---------- --------------- - ---------------- ------------------- - ----- ----- - ---------------- --------------------------- - --
注销用户
我们需要使用 GET 方法来注销当前用户。为此,我们将创建一个 get 路由。
首先,我们定义一个路由:
fastify.get('/logout', async (request, reply) => { try { // 清除 Token reply.send({ success: true }) } catch (err) { console.log(err) } })
更改密码
我们需要使用 PUT 方法来更改密码。为此,我们将创建一个 put 路由。
首先,我们定义一个路由:
-- -------------------- ---- ------- ------------------------ ----- --------- ------ -- - --- - ----- - ------------ ----------- - - ------------ -- ----- ----- ---- - ----- ------------------------ --- ----- ------ - ----- ----------- ----- ------------- ------- ----- --- ----------- ----- ------- ------ --------------- - ---------------- ------------ -------- --------- -------- -- - ----- ----- - ---------------- --------------------------- - --
启动服务器
出于演示目的,我们使用以下命令启动服务器:
node index.js
结论
在本文中,我们详细讲述了如何使用 Fastify 和 PostgreSQL 开发 RESTful API。从连接到数据库到路由的配置,我们为你提供了一个完整的指南。随着你加深对这些技术的理解,你可以继续探索这些工具的更多功能。我们希望这篇文章能够帮助你开始自己的 RESTful API 开发旅程。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/66fd86da44713626017e6661