如何在 Deno 中处理表单数据

在现代 Web 开发中,处理表单数据是非常基础和常见的需求。在 Deno 中,处理表单数据也是一样的。本文将向您介绍如何在 Deno 中处理表单数据。本文将涵盖以下主题:

  • Deno 中处理表单数据的方式
  • 如何从请求中提取表单数据
  • 处理 multipart/form-data 格式的表单数据
  • 示例代码

Deno 中处理表单数据的方式

Deno 提供了一个名为 std/http 的标准库来处理 HTTP 请求和响应。在使用 Deno 处理表单数据时,我们需要通过这个标准库来获取和解析表单数据。

如何从请求中提取表单数据

在 Deno 中,std/httpserve() 函数可以用来创建 HTTP 服务器。当客户端向服务器发送 HTTP 请求时,我们可以从请求中获取表单数据。

考虑以下示例代码:

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

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

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

这个示例代码中,我们创建了一个 HTTP 服务器,并使用 serve() 函数来监听端口 8080 上的请求。当客户端发送一个请求时,我们可以使用 await request.text() 来获取请求体的文本。我们将文本输出到控制台,并发送一个简单的响应。当您运行此示例代码并在您的浏览器中访问 http://localhost:8080 时,您将在命令行中看到您的请求体。

处理 multipart/form-data 格式的表单数据

默认情况下,HTTP 请求提交表单数据时,数据将使用 URL 编码方式进行编码。但是,当表单数据包含文件时,我们必须使用 multipart/form-data 编码方式。在 Deno 中,我们可以使用 fetch() 接口来发送包含表单数据的请求。

考虑以下示例代码:

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

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

在此代码片段中,我们创建了一个 FormData 对象,并将用户名和文件添加到该对象中。我们使用 fetch() 函数将数据提交到我们之前创建的服务器。

当使用 multipart/form-data 编码方式时,我们需要对请求的 body 进行特殊处理以提取表单数据。在 Deno 中,我们可以用 encoders 模块中的 MultipartReader 读取 multipart/form-data 格式的请求内容。考虑以下示例代码:

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

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

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

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

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

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

在此代码片段中,我们首先检查请求的 content-type 是否为 multipart/form-data。如果是,我们从请求的头中获取边界,并使用 new MultipartReader(request.body, boundary) 创建一个 MultipartReader 对象。该对象提供了一个 readForm() 方法,可以返回使用 multipart/form-data 编码方式的表单数据。我们将表单数据输出到控制台。

示例代码

考虑以下代码片段,它演示了如何处理包含文件的表单数据:

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

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

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

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

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

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

在此示例代码中,我们从请求中提取了表单数据,并将其输出到控制台。使用此示例代码,您可以处理包含文件和其他表单数据的请求。

结论

本文向您介绍了如何在 Deno 中处理表单数据。现代 Web 应用程序需要处理表单数据,本文为您提供了相关指导。强烈建议您在了解了本文所述后尝试使用 Deno 处理表单数据。

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