Deno 是一个现代化的 JavaScript 和 TypeScript 运行时环境,可以在浏览器以外的环境下运行 JavaScript 和 TypeScript 代码,而且不需要使用 node.js 和 npm 包管理器。在 Deno 中,我们可以使用 HTTP 模块来处理 HTTP 请求,这篇文章主要介绍如何在 Deno 中处理 HTTP 请求。
准备工作
在开始本篇文章中的实践步骤前,请确保您已安装了 Deno 以及您喜欢的代码编辑器。安装 Deno 可以使用以下命令:
- ---- ----- -------------------------------------- - -- - ------ ----------------------------
安装完成后,可以使用以下命令测试 Deno 是否安装成功:
- ---- ---------
如果显示了版本号,那么您已经成功安装 Deno。
处理 HTTP 请求
创建 HTTP 服务器
在 Deno 中,可以使用 serve()
函数来创建 HTTP 服务器,如下所示:
------ - ----- - ---- --------------------------------------- ----- - - ------- ----- ---- --- --- ----- ------ --- -- -- - ------------- ----- ------ -------- --- -
在上面的示例中,我们创建了一个 HTTP 服务器并监听了本地的 8000
端口。然后使用 for await
循环来监听 HTTP 请求。当有请求到来时,服务器会自动向客户端发送 Hello World\n
。
处理 HTTP 请求方法
通过 HttpRequest
对象可以获得 HTTP 请求的方法、头部、路径等信息。以下是一个简单的示例:
------ - ----- - ---- --------------------------------------- ----- - - ------- ----- ---- --- --- ----- ------ --- -- -- - -------------------------- ------------- ------------- ----- ------ -------- --- -
在上述示例中,我们打印了 HTTP 请求的方法和路径,并发送了一个 Hello World\n
的响应。
处理 HTTP 请求头
可以使用 HttpRequest.headers
获取 HTTP 请求的头部。以下是一个示例:
------ - ----- - ---- --------------------------------------- ----- - - ------- ----- ---- --- --- ----- ------ --- -- -- - ------------------------------------------- ------------- ----- ------ -------- --- -
在上述示例中,我们使用 headers.get()
方法来获取 HTTP 请求头部中 User-Agent
字段的值,并打印到控制台。
处理 HTTP 请求体
对于 POST 请求,我们可以使用 readall()
方法读取 HTTP 请求体。以下是一个示例:
------ - ----- - ---- --------------------------------------- ----- - - ------- ----- ---- --- --- ----- ------ --- -- -- - ----- ---- - ----- --------------------- -- --- --------------------------- ------------------ ------------- ----- ------ -------- --- -
在上述示例中,我们使用 body()
方法读取 HTTP 请求体。请注意,body()
方法返回一个 Promise,因此我们需要使用 .then()
方法来等待 Promise 的解析。然后,我们使用 TextDecoder()
将字节数组解码为字符串,并打印 HTTP 请求体。
总结
通过上述示例,我们可以看到在 Deno 中处理 HTTP 请求是非常容易的。我们只需要使用 HTTP 模块提供的方法和对象就可以轻松地处理 HTTP 请求。希望这篇文章对您有所帮助。
参考资料
来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/6479816f968c7c53b05814d4