Deno 教程 目录

Deno 处理HTTP请求

Deno 是一个现代的 JavaScript 和 TypeScript 运行时,它内置了许多安全功能,并且提供了一种处理 HTTP 请求的新方法。本章将详细介绍如何使用 Deno 来处理 HTTP 请求。

创建简单的 HTTP 服务器

创建一个简单的 HTTP 服务器是学习如何使用 Deno 处理 HTTP 请求的基础。首先,让我们来看一下如何通过 Deno 创建一个基本的 HTTP 服务器。

这段代码首先导入了 serve 函数,然后通过这个函数创建了一个监听 8000 端口的服务器。对于每个传入的请求,服务器会简单地返回 "Hello World"。

接收和解析请求参数

在实际应用中,我们经常需要处理来自客户端的请求参数。这些参数可以通过 URL、查询字符串或请求体传递给服务器。Deno 提供了多种方式来接收和解析这些参数。

URL 参数

URL 参数通常通过路径传递。例如,如果你的 API 路径是 /api/users/:id,那么 :id 就是一个 URL 参数。你可以使用以下代码来获取这些参数:

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

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

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

查询字符串

查询字符串通常是 URL 中的一部分,用于向服务器发送额外的信息。你可以通过 URLSearchParams 对象来访问它们。

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

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

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

请求体

当客户端通过 POST 或 PUT 请求发送数据时,这些数据会出现在请求体中。为了从请求体中读取数据,你需要使用 req.body 属性。

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

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

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

响应处理

除了发送简单的文本响应之外,你还可以发送更复杂的响应,如 JSON、HTML 或者静态文件。

发送 JSON 响应

在许多 Web 应用中,API 通常会返回 JSON 格式的响应。下面是如何使用 Deno 发送 JSON 响应的例子:

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

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

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

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

发送 HTML 响应

有时候,你可能需要发送 HTML 内容作为响应。这可以通过简单地设置响应头并发送 HTML 字符串来实现。

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

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

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

发送静态文件

在开发 Web 应用时,有时需要提供一些静态资源,如图片、CSS 文件或 JavaScript 文件。Deno 提供了简单的机制来处理这些静态文件。

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

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

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

在这个例子中,服务器尝试从指定目录(这里是 ./public)读取请求的文件。如果文件存在,则返回文件内容;否则返回 404 错误。

中间件和路由

随着应用变得复杂,你可能会发现需要使用中间件来处理各种任务,如日志记录、错误处理等。Deno 提供了一些工具和库来帮助你管理这些需求。

使用中间件

中间件可以让你在请求到达最终处理程序之前对其进行操作。Deno 的标准库提供了 http/middleware 模块,你可以利用它来添加日志记录等功能。

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

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

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

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

路由管理

随着应用规模的增长,你可能需要对不同的 URL 使用不同的处理逻辑。这时,路由管理就显得尤为重要。虽然 Deno 没有内置的路由系统,但你可以使用第三方库来简化这一过程。

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

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

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

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

在这个例子中,我们定义了几个路由,包括 GET 和 POST 方法。当请求到达时,路由器会查找匹配的处理函数并执行它。

以上就是关于 Deno 如何处理 HTTP 请求的详细讲解。希望这些示例能帮助你在实际项目中更好地使用 Deno。

纠错
反馈