使用 Fastify 和 PostgreSQL 的 RESTful API 教程

近年来,随着前端技术的飞速发展,越来越多的人开始热衷于开发 RESTful API。使用 Fastify 和 PostgreSQL 结合开发 RESTful API 成为了一种常见的方式。Fastify 是一个高效、适用于 Web 和 HTTP 的框架。而 PostgreSQL 是一款强大的关系型数据库。在本篇文章中,我们将会深入探讨如何使用 Fastify 和 PostgreSQL 构建 RESTful API。

准备工作

在开始之前,你需要安装 Node.jsPostgreSQL。还需要新建一个数据库。

我们需要使用以下库:

  1. fastify
  2. pg
  3. fastify-cors
  4. fastify-auth
  5. bcryptjs

运行以下命令安装这些库:

--- ------- ------- -- ------------ ------------ -------- ------

创建服务器

我们将会创建一个服务器以监听来自客户端的请求,并对这些请求作出响应。具体实现过程如下:

----- ------- - -------------------- ------- ---- --

-------------------- --- -- -
  -- ----- -
    ----------------------
    ---------------
  -
--

我们新建了一个 Fastify 实例,并让其在本地的 3000 端口上运行。

连接数据库

我们需要连接数据库来存储用户信息。我们可以通过 pg 包完成连接。

定义一个连接字符串:

----- ---------------- - --------------------------------------------------

创建一个池,此池将在整个应用程序中被重复使用。

----- -------- ----------- -
    ----- ---- - --- ------ ---------------- --
    ----- ------ - ----- --------------
    ------ ------
-

配置路由

对于一个 Restful API 来说,所谓的接口就是指的路由。我们来创建路由、对请求做出响应,以及添加必要的验证。我们创建以下 5 个路由:注册、登录、获取当前用户、注销用户和更改密码。

注册

我们需要使用 POST 方法来注册新用户。为此,我们将创建一个 post 路由。该路由将创建一个新用户对象并将其存储在数据库中。

首先,我们定义一个路由:

------------------------- ----- --------- ------ -- -
  --- -
    ----- ------ - ----- -----------
    ----- - ------ -------- - - ------------
    ----- ---- - ----- --------------------- ---
    ----- --- - ----- -------------
      ------- ---- ------------ --------- ---------- --- --------- --- -------
      ------- -----
    -
    ----------------
    -----------------------
  - ----- ----- -
    ----------------
  -
--

登录

我们需要使用 POST 方法来登录用户。为此,我们将创建一个 post 路由。该路由将验证用户的凭据是否正确,如果正确,则发放 Token 令牌。我们将使用 bcryptjs 密码哈希算法。

首先,我们定义一个路由:

---------------------- ----- --------- ------ -- -
  --- -
    ----- ------ - ----- -----------
    ----- - ------ -------- - - ------------
    ----- - ---- - - ----- -------------
      ------- --- ------ -------- ---- ----- ----- ----------
      -------
    -
    ----------------
    ----- ---- - -------
    -- ----- -- ------ ------------------------ ---------------- -
      ----- ----- - ---------- ------ ---------- -- --------- - ---------- ---- --
      ------ - ----- -
    - ---- -
      ----- --- -------
    -
  - ----- ----- -
    ----------------
    ------------------------------- ----- -- ----------
  -
--

获取当前用户

我们需要使用 GET 方法来获取当前的用户。为此,我们将创建一个 get 路由。

首先,我们需要在路由定义中使用 fastify-auth 库对用户进行身份验证:

-----------------------------------------
-------------------------------- ----- --------- ------ -- -
  --- -
    ----- -------------------
  - ----- ----- -
    ----------------
    ---------------
  -
--

然后定义一个路由 handler:

----------------------- - ----------- ---------------------- -- ----- --------- ------ -- -
  --- -
    ----- ----- - ------------------------------------- -----
    ----- ------- - ----------------- ---------
    ----- ------ - ----- -----------
    ----- - ---- - - ----- -------------
      ------- --- ----- ---- ----- ----- ----------
      ---------------
    -
    ----------------
    -------------------
  - ----- ----- -
    ----------------
    ---------------------------
  -
--

注销用户

我们需要使用 GET 方法来注销当前用户。为此,我们将创建一个 get 路由。

首先,我们定义一个路由:

---------------------- ----- --------- ------ -- -
  --- -
    -- -- -----
    ------------ -------- ---- --
  - ----- ----- -
    ----------------
  -
--

更改密码

我们需要使用 PUT 方法来更改密码。为此,我们将创建一个 put 路由。

首先,我们定义一个路由:

------------------------ ----- --------- ------ -- -
  --- -
    ----- - ------------ ----------- - - ------------
    -- -----
    ----- ---- - ----- ------------------------ ---
    ----- ------ - ----- -----------
    ----- -------------
      ------- ----- --- ----------- ----- -------
      ------ ---------------
    -
    ----------------
    ------------ -------- --------- -------- --
  - ----- ----- -
    ----------------
    ---------------------------
  -
--

启动服务器

出于演示目的,我们使用以下命令启动服务器:

---- --------

结论

在本文中,我们详细讲述了如何使用 Fastify 和 PostgreSQL 开发 RESTful API。从连接到数据库到路由的配置,我们为你提供了一个完整的指南。随着你加深对这些技术的理解,你可以继续探索这些工具的更多功能。我们希望这篇文章能够帮助你开始自己的 RESTful API 开发旅程。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/66fd86da44713626017e6661