You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Deno中读取POST请求request对象内的请求数据

Deno读取POST请求体的方法

你代码中的req为Deno标准库http模块的ServerRequest实例,POST请求的请求体需要通过该实例提供的异步方法读取,另外你示例代码中的method变量未定义,需改为读取req.method属性判断请求方法。

常用读取方式

根据你请求体的格式,选择对应的方法即可,所有方法均为异步,需要配合await使用:

  • 读取JSON格式请求体:调用req.json(),直接返回解析后的JS对象
  • 读取纯文本/字符串格式请求体:调用req.text()
  • 读取表单提交数据(包括普通表单和带文件的multipart表单):调用req.formData(),返回FormData对象,可通过get()方法读取对应字段
  • 读取二进制原始数据:调用req.arrayBuffer(),或直接消费req.body可读流

修正后的示例代码

// 从Deno标准库http模块导入serve方法
import { serve } from "std/http/server.ts";
const s = serve({ port: 8000 });

for await (const req of s) {
  if(req.url === '/update' && req.method === 'POST') {
    // 示例:读取JSON格式的POST数据
    try {
      const postData = await req.json();
      console.log("获取到的POST请求数据:", postData);
      req.respond({ body: "数据接收完成" });
    } catch (e) {
      req.respond({ status: 400, body: "请求体格式错误" });
    }
  } else {
    req.respond({ status: 404, body: "路径不存在" });
  }
}

注意事项

  • 请求体是只读流,消费后无法重复读取,上述读取方法只能调用一次
  • 若你使用的是旧版本Deno的http服务API,可通过以下兼容方式读取原始请求体:
const bodyUint8 = await Deno.readAll(req.body);
const postText = new TextDecoder().decode(bodyUint8);

内容的提问来源于stack exchange,提问作者user16151202

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.08 23:27:02