前言
随着前端技术的不断发展,前端工程师们的职责也越来越广泛。在过去,前端工程师的主要任务是编写 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:
$ curl -fsSL https://deno.land/x/install/install.sh | sh
安装完成后,可以通过以下命令来检查 Deno 是否安装成功:
$ deno --version
然后,我们可以使用以下命令来安装 Oak:
$ deno install --allow-net --allow-read https://deno.land/x/oak/mod.ts
现在,我们可以开始创建一个简单的 API 了。首先,创建一个名为 server.ts
的文件,然后输入以下代码:
-- -------------------- ---- ------- ------ - ------------ ------ - ---- --------------------------------- ----- ------ - --- --------- --------------- ----- -- - ----------------- - ------- -------- --- ----- --- - --- -------------- ------------------------- --------------------------------- ------------------- ------- -- ------------------------ ----- ------------ ----- ---- ---
在上面的代码中,我们首先导入了 Application
和 Router
类,然后创建了一个路由器并注册了一个路由处理程序。在路由处理程序中,我们将响应主体设置为 Hello, World!
。接下来,我们创建了一个应用程序并使用 app.use
方法注册了路由器中间件。最后,我们使用 app.listen
方法启动了服务器。
现在,我们可以使用以下命令来运行服务器:
$ deno run --allow-net server.ts
然后,我们可以在浏览器中访问 http://localhost:8080
,应该可以看到 Hello, World!
。
实现用户授权
现在,我们已经创建了一个简单的 API,但它没有任何安全措施。在实际应用中,我们需要对 API 进行安全控制,例如,用户授权、访问控制等。
在 Oak 中,我们可以使用中间件来实现用户授权。首先,我们需要创建一个名为 auth.ts
的文件,并输入以下代码:
-- -------------------- ---- ------- ------ - ---------- - ---- --------------------------------- ------ ----- --------------- ---------- - ----- ----- -- - ----- ---------- - ----------------------------------------- -- ------------- - ------------------- - ---- ----------------- - --------------- ------- - ----- ----- - ------------------ ------ -- ------- -- ----- --- --------------- - ------------------- - ---- ----------------- - --------------- ------- - ------ ------- --
在上面的代码中,我们首先定义了一个名为 authMiddleware
的中间件。在中间件中,我们从请求头中获取 Authorization
字段,如果该字段不存在,则返回 401 状态码和 Unauthorized
响应主体。如果该字段存在,则从中提取出令牌,并检查令牌是否等于 secret-token
。如果令牌不正确,则返回 401 状态码和 Unauthorized
响应主体。如果令牌正确,则调用 next
函数,继续执行下一个中间件或路由处理程序。
现在,我们可以在 server.ts
文件中使用 authMiddleware
中间件来实现用户授权。我们可以将其添加到路由器中间件中,如下所示:
-- -------------------- ---- ------- ------ - ------------ ------ - ---- --------------------------------- ------ - -------------- - ---- ------------ ----- ------ - --- --------- --------------- ----- -- - ----------------- - ------- -------- --- ------------------------ --------------- ----- -- - ----------------- - ---------- --------- --- ----- --- - --- -------------- ------------------------- --------------------------------- ------------------- ------- -- ------------------------ ----- ------------ ----- ---- ---
在上面的代码中,我们定义了一个名为 /protected
的路由,然后将 authMiddleware
中间件添加到该路由中。这意味着只有在提供正确的令牌时,才能访问该路由。
现在,我们可以使用以下命令来运行服务器:
$ deno run --allow-net server.ts
然后,我们可以在浏览器中访问 http://localhost:8080/protected
,应该会看到 Unauthorized
,因为我们没有提供正确的令牌。现在,我们可以使用以下命令来访问 /protected
路由,并提供正确的令牌:
$ curl -H "Authorization: Bearer secret-token" http://localhost:8080/protected
现在,我们应该可以看到 Protected content
。
总结
在本文中,我们介绍了如何使用 Deno 和 Oak 创建一个支持用户授权的 API。我们深入探讨了 Deno 和 Oak 的基本概念,介绍了如何创建一个简单的 API,以及如何在 API 中实现用户授权。希望这篇文章对您有所帮助,谢谢阅读!
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6614a93fd10417a2224e44bb