Deno 是一个新兴的 JavaScript 和 TypeScript 运行时环境,它与 Node.js 不同之处在于它默认启用了沙箱机制,具有更高的安全性和开发体验。它内置了 HTTP 模块,可以用来完成浏览器和 Node.js 中的 HTTP 相关工作。在本文中,我们将深入学习 Deno 中的 HTTP 模块,包括如何创建服务器和客户端,并给出一些示例代码。
创建 HTTP 服务器
使用 Deno 的 HTTP 模块创建服务器非常简单。首先,我们来看一个最基础的案例:
------ - ----- - ---- --------------------------------------- ----- ------ - ------- ----- ---- --- ------------------- -- ------- -- ------------------------- --- ----- ------ --- -- ------- - ------------- ----- ------ -------- --- -
这个案例创建了一个简单的服务器,监听 8000 端口,当收到请求时返回 "Hello World"。接下来,我们逐个解释这个代码。
------ - ----- - ---- ---------------------------------------
首先,我们从 Deno 标准库中导入 serve
函数,该函数返回一个 HTTP 服务器对象。需要注意,Deno 标准模块中的 URL 是完整的 URL,需要使用 https://
前缀。
----- ------ - ------- ----- ---- ---
接着,我们使用 serve
函数创建一个 HTTP 服务器对象,并传入一个选项对象,其中指定了监听的端口(8000)。
------------------- -- ------- -- -------------------------
最后,我们在控制台输出一个提示消息。
--- ----- ------ --- -- ------- - ------------- ----- ------ -------- --- -
这里使用了一个 for await...of
循环,该循环会监听 server
对象创建的服务器,并等待请求的到来。当有请求到来时,它会将请求对象 req
传入循环体中,我们可以在循环体内部对这个请求做出响应。
使用 req.respond
函数可以对请求做出响应,我们可以指定响应的数据和一些其他的选项。在这个案例中,我们只是简单地返回了一个字符串 "Hello World"。
创建 HTTP 客户端
除了创建服务器,Deno 的 HTTP 模块还提供了构建客户端的功能。我们可以使用 fetch
函数和 Request
/Response
类来实现 HTTP 请求和响应。这里以一个简单的 GET 请求为例:
----- --- - ----- ------------------------------------------------ ----- ---- - ----- ----------- ------------------
这个代码会向 GitHub 的 API 请求关于 deno_land 的用户信息,并将返回结果打印在控制台上。
以上代码中,我们使用了 fetch
函数构建了一个 HTTP 请求,通过设置 URL 参数来指定请求的目标地址。fetch
把请求发送到指定的 URL,然后返回一个 Response
对象。我们可以通过 await res.json()
获取响应内容并将其转换为 JSON 对象。最后,我们将返回结果打印在控制台上。
需要注意的是,Deno 的 fetch
函数默认情况下是启用跨域资源共享(CORS)的。如果你需要发送跨域请求,需要配置 --allow-net
权限。
总结
本文介绍了如何使用 Deno 的 HTTP 模块创建 HTTP 服务器和客户端,并给出了一些示例代码。相比 Node.js,Deno 的 HTTP 模块使用更加简单,也更安全。通过学习本文,你可以更好地了解 Deno 的 HTTP 模块的使用方法,并开始构建自己的 Deno 项目。
来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/6455e61b968c7c53b0940cec