使用 Deno 和 Oak 创建一个支持用户授权的 API

阅读时长 6 分钟读完

前言

随着前端技术的不断发展,前端工程师们的职责也越来越广泛。在过去,前端工程师的主要任务是编写 HTML、CSS 和 JavaScript 代码,但现在,前端工程师们需要具备更多的技能,例如,构建 RESTful API,处理用户授权等。

在本文中,我们将介绍如何使用 Deno 和 Oak 创建一个支持用户授权的 API。我们将深入探讨 Deno 和 Oak 的基本概念,介绍如何创建一个简单的 API,以及如何在 API 中实现用户授权。

什么是 Deno?

Deno 是一个基于 TypeScript 和 V8 引擎的运行时环境,它与 Node.js 相似,但具有更好的安全性和性能。Deno 不需要使用 npm 包管理器,它使用 URL 来导入模块,也可以从本地文件系统导入模块。Deno 还提供了一些内置的工具,例如,用于测试、格式化和调试代码的工具。

什么是 Oak?

Oak 是一个基于 Deno 的 Web 框架,它具有简单、轻量级和可扩展的特点。Oak 提供了一组中间件,使开发人员可以轻松地构建 API 和 Web 应用程序。Oak 还提供了一些内置的中间件,例如,用于处理请求和响应的中间件、用于处理错误的中间件等。

创建一个简单的 API

在开始创建 API 之前,我们需要先安装 Deno 和 Oak。可以通过以下命令来安装 Deno:

安装完成后,可以通过以下命令来检查 Deno 是否安装成功:

然后,我们可以使用以下命令来安装 Oak:

现在,我们可以开始创建一个简单的 API 了。首先,创建一个名为 server.ts 的文件,然后输入以下代码:

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

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

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

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

在上面的代码中,我们首先导入了 ApplicationRouter 类,然后创建了一个路由器并注册了一个路由处理程序。在路由处理程序中,我们将响应主体设置为 Hello, World!。接下来,我们创建了一个应用程序并使用 app.use 方法注册了路由器中间件。最后,我们使用 app.listen 方法启动了服务器。

现在,我们可以使用以下命令来运行服务器:

然后,我们可以在浏览器中访问 http://localhost:8080,应该可以看到 Hello, World!

实现用户授权

现在,我们已经创建了一个简单的 API,但它没有任何安全措施。在实际应用中,我们需要对 API 进行安全控制,例如,用户授权、访问控制等。

在 Oak 中,我们可以使用中间件来实现用户授权。首先,我们需要创建一个名为 auth.ts 的文件,并输入以下代码:

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

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

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

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

在上面的代码中,我们首先定义了一个名为 authMiddleware 的中间件。在中间件中,我们从请求头中获取 Authorization 字段,如果该字段不存在,则返回 401 状态码和 Unauthorized 响应主体。如果该字段存在,则从中提取出令牌,并检查令牌是否等于 secret-token。如果令牌不正确,则返回 401 状态码和 Unauthorized 响应主体。如果令牌正确,则调用 next 函数,继续执行下一个中间件或路由处理程序。

现在,我们可以在 server.ts 文件中使用 authMiddleware 中间件来实现用户授权。我们可以将其添加到路由器中间件中,如下所示:

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

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

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

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

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

在上面的代码中,我们定义了一个名为 /protected 的路由,然后将 authMiddleware 中间件添加到该路由中。这意味着只有在提供正确的令牌时,才能访问该路由。

现在,我们可以使用以下命令来运行服务器:

然后,我们可以在浏览器中访问 http://localhost:8080/protected,应该会看到 Unauthorized,因为我们没有提供正确的令牌。现在,我们可以使用以下命令来访问 /protected 路由,并提供正确的令牌:

现在,我们应该可以看到 Protected content

总结

在本文中,我们介绍了如何使用 Deno 和 Oak 创建一个支持用户授权的 API。我们深入探讨了 Deno 和 Oak 的基本概念,介绍了如何创建一个简单的 API,以及如何在 API 中实现用户授权。希望这篇文章对您有所帮助,谢谢阅读!

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

纠错
反馈