Deno 中 HTTP 请求处理的基础知识

在现代 Web 应用程序中,HTTP 是一种非常重要的协议。由于 Node.js 从一开始就支持异步 I/O,因此 Node.js 与 HTTP 协议的结合非常良好。现在,我们有了一个新的 JS 运行时:Deno。

Deno 是一种相对较新的 JavaScript 和 TypeScript 运行时,因此我们需要探究探究有关 Deno 的基础知识,特别是在处理 HTTP 请求方面的知识。

前置说明

在开始学习 Deno 中的 HTTP 请求处理之前,有一些前置说明是必要的。

  • Deno 并不依赖于 Node.js 或 npm。它有自己的包管理器和类型检查工具。

  • 和 Node.js 不同,Deno 使用其他机制来处理同步和异步操作:

    • 异步操作:Deno 借助了 Promise 和 async/await 模式,让程序的控制流可以利用 await 语句来等待异步函数中的结果;

    • 同步操作:Deno 则使用一个叫做 “Worker” 的实体来执行同步操作,这是一个类似于线程的概念。

HTTP 服务端

在 Deno 中运行一个HTTP服务端的基本结构如下所示。

在这段代码中,我们引入了 Deno 自带的 HTTP 模块,然后通过 serve 函数创建了一个服务实例,该函数需要一个端口作为参数,用于绑定服务地址。

然后我们再通过Sync的 console.log 方法打印一些信息以及成功启动了这个服务。

接下来,在它下面的 for ... of 循环中处理 HTTP 请求。

HTTP 请求处理函数

在 Deno 的 HTTP 模块中,处理请求的函数是 handle(). handle() 方法是在 for ... of 循环中调用的。

下面是一个处理 HTTP GET 请求的例子。

在这个例子中,我们定义了一个 handle() 函数来处理从客户端发来的 HTTP 请求,并且通过 respondWith() 方法返回一个 HTTP 响应。

为了触发 handle() 函数,我们需要通过循环依次监听HTTP请求。这里我们使用了 for ... of 循环来监听服务实例中的请求。

HTTP POST 请求处理

除了 GET 请求,Deno 也支持 POST 请求。

下面是一个处理 HTTP POST 请求的例子。

在这个例子中,我们使用了 request.json() 方法来获取请求中的 JSON 数据,并把它打印出来。

我们还在响应中使用了 Content-Type 标头来指定返回的响应数据类型为 JSON。在这里我们使用JSON.stringify来序列化并将body的类型设置为 "application/json"。

总结

在这份指南中,我们讨论了 Deno 中 HTTP 请求处理的基础知识,包括如何使用 Deno 内置的 HTTP 模块来创建 HTTP 服务端以及如何处理 HTTP 请求。我们还提供了一些示例代码,帮助您更好的理解这些基础知识。

在以后的学习中,我们可以深入探索 Deno 的各种功能,如使用 Deno 来读写文件、部署 Deno 应用到生产环境等。当我们深入了解这些知识后,我们将能够更加熟悉 Deno,并且可以在我们的下一份 Web 应用程序中更好地利用它。

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


纠错
反馈