如何优雅地使用 Deno 编写 REST API

阅读时长 10 分钟读完

Deno 是一个类似于 Node.js 的 JavaScript/TypeScript 运行时环境。它在安全性、性能、可维护性等方面有一些优势。因此,它可以用来编写 REST API。在本文中,我们将介绍如何使用 Deno 来编写 REST API。

安装 Deno

Deno 可以在 Windows、Linux、MacOS 等平台上运行。我们可以从 Deno 的官方网站下载可执行文件。也可以使用包管理器安装 Deno。

安装之后,我们可以在终端中输入以下命令来检查 Deno 是否安装成功:

创建 REST API 项目

我们可以使用 Deno 提供的标准库来编写 REST API。Deno 标准库包括许多有用的模块,例如 httpfspath 等。以下是一个简单的 REST API 项目的目录结构:

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

在这个项目中,我们有三个文件夹:controllers、database 和 routes。在 controllers 文件夹中,我们将编写控制器来处理 REST API 的请求。在 database 文件夹中,我们将定义数据库的连接。在 routes 文件夹中,我们将定义 REST API 的路由。utils 文件夹中含有一些的通用工具函数。.env 文件则存储了一些私密信息(如数据库密码等)。

现在,我们可以开始逐步地实现这个 REST API。

连接数据库

我们可以使用 MongoDB 作为我们的数据库。在 database.ts 文件中,我们可以添加以下代码来连接 MongoDB 数据库:

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

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

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

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

我们使用 MongoDB 官方提供的 MongoClient 类来连接 MongoDB 数据库。我们从 .env 文件中读取数据库 URI 和数据库名称。最后,我们将数据库实例导出,以便其他模块可以使用它。

实现控制器

在 controllers 文件夹中,我们将实现我们的控制器。控制器是处理 REST API 请求的核心组件。

例如,我们在 users.ts 文件中可以实现一个处理用户请求的控制器:

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

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

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

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

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

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

我们定义了五个处理 REST API 请求的函数。它们返回一个 Promise 对象,该对象可以异步地响应请求。例如,getAllUsers 控制器返回所有用户的列表。

在这些函数中,我们使用了 Oak 这个框架的 RouterContextStatus 类型。

实现路由

routes/users.ts 文件中,我们将实现路由处理。路由是定义 REST API 的 URL 路径的地方。

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

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

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

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

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

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

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

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

在这个文件中,我们创建了一个名为 router 的对象来定义路由。这个对象使用了 Oak 的 Router 类。我们在前缀字符串"/api/v1/users"中定义 REST API 的基础路径。然后,我们使用 router.GETrouter.POSTrouter.PUTrouter.DELETE 函数来定义 REST API 的 HTTP 方法和 URL。每个方法处理定义的相应请求的控制器函数。

启动 REST API

最后,我们将所有这些模块集成在一起并启动 REST API。在 app.ts 文件中,我们可以编写以下代码:

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

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

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

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

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

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

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

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

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

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

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

在这个文件中,我们创建了一个名为 app 的对象来创建服务器。我们还通过 usersRouter 引入了路由定义。我们还添加了记录请求时间的中间件。最后,我们将我们的应用程序绑定到端口并启动它。

结论

在这篇文章中,我们探讨了如何使用 Deno 来编写 REST API。我们了解了如何些优雅使用 Deno。我们展示了如何创建控制器、连接数据库以及创建路由等。我们还编写了一个完整的应用程序来集成我们所有的组件。

Deno 是一个优秀的 JavaScript/TypeScript 运行时环境。它为我们提供了在安全性、性能、可维护性等方面的保证,使其成为开发 REST API 的理想选择。愿这篇文章对你的 Deno/REST API 开发旅程有所帮助!

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/676cf40182fcee791c623830

纠错
反馈