如何利用 Deno 构建一个高质量的 REST API

介绍

Deno 是一个基于 V8 引擎的 JavaScript 和 TypeScript 运行时,由于它的安全性和开发效率,越来越受到开发者的青睐。在本文中,我们将介绍如何使用 Deno 来构建一个高质量的 REST API,让你轻松上手。

环境搭建

首先,我们需要安装 Deno。你可以通过 Deno 的官网(https://deno.land/)获取最新的安装包,在安装完成后,可以通过命令行输入 deno --version 来检查是否安装成功。

现在,我们可以开始创建我们的项目了。首先,创建一个新的目录,例如 rest-api,然后在其中创建一个名为 app.ts 的文件:

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

初始化项目

接着,我们需要初始化我们的项目。我们可以使用 deno init 命令来初始化我们的项目:

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

这里,我们使用了 --allow-net--allow-env 来允许我们的应用程序可以访问网络和环境。

接下来,我们需要安装一些依赖。我们使用 Deno 的内置管理器来安装依赖:

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

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

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

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

在上面的代码中,我们使用了 Oak 框架来构建我们的 REST API。我们需要导入 Oak,并创建一个应用程序实例。然后,我们使用 app.use 方法来定义路由,默认的路由返回了一个简单的 "Hello, World!" 消息。

最后,我们通过 app.listen 方法来启动我们的应用程序。此时,我们可以通过 deno run --allow-net app.ts 命令来启动我们的应用程序,访问 http://localhost:8000 ,你将看到 "Hello, World!" 消息。

添加路由和中间件

现在,我们来添加一些真正的路由和中间件。假设我们需要构建一个博客应用程序,我们需要实现以下几个 API:

  • GET /posts 获取所有博客文章
  • GET /posts/:id 获取指定文章的详细信息
  • POST /posts 创建一个新的博客文章
  • PUT /posts/:id 更新指定文章的详细信息
  • DELETE /posts/:id 删除指定文章

我们可以使用 Oak 提供的路由器来实现这些路由。打开 app.ts 文件,添加以下代码:

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

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

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

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

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

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

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

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

在上面的代码中,我们创建了一个路由器实例。然后,我们使用 router.getrouter.postrouter.putrouter.delete 方法来定义我们的路由。对于带有参数的路由,例如 /posts/:id,我们可以使用 ctx.params.id 来获取请求中传递的参数。

构建数据库层

接下来,我们需要实现一个数据库层,用于存储我们的博客文章。在本文中,我们将使用 Deno 的内置文件系统来模拟我们的数据库。

首先,我们需要创建一个 Post 类来表示我们的文章。在 models.ts 文件中添加以下代码:

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

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

在上面的代码中,我们定义了一个 Post 类,它包含了文章的 idtitlecontent

接下来,我们需要实现一些方法来实现我们的数据库操作。我们可以在 db.ts 文件中添加以下代码:

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

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

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

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

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

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

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

在上面的代码中,我们导出了一些数据库操作方法,例如 getAllPostsgetPostByIdcreatePostupdatePostdeletePost。这些方法模拟了我们对数据库的读写操作。

现在,我们已经实现了我们的数据库层。

整合数据库和路由器

最后,我们需要整合我们的路由器和数据库层。我们可以在 app.ts 文件中,使用我们的数据库层来实现我们的路由器:

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

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

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

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

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

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

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

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

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

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

在上面的代码中,我们使用我们的 getAllPostsgetPostByIdcreatePostupdatePostdeletePost 方法来实现我们的路由器。现在,我们已经实现了一个基本的 REST API 应用程序,让我们通过命令行启动它,然后使用 Postman 测试它。

结论

在本文中,我们介绍了如何使用 Deno 来构建一个高质量的 REST API。我们使用了 Oak 框架来实现路由器和中间件,使用 Deno 的内置文件系统来模拟了数据库层。通过本文,你可以学到如何使用 Deno 来构建一个简单但高效的 REST API 应用程序。

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