我想我错过了一些明显的东西,但我需要另一个头脑来让我摆脱困境.

我的目标是:从nextjs访问POST请求的主体,如本页面所示. https://nextjs.org/docs/pages/building-your-application/data-fetching/building-forms

// root folder page.js file
//===========================

import Image from 'next/image'
import styles from './page.module.css'

export default function Home() {
  return (
 <main className={styles.main}>
    <div className={styles.description}>
        <p>
            <form action="/route" method="post">
                <label for="first">First name:</label>
                <input type="text" id="first" name="first"/><br/><br/>
                <label for="last">Last name:</label>
                <input type="text" id="last" name="last"/><br/><br/>
                <input type="submit" value="Submit"/>
            </form>
        </p>
    </div>
</main>
  )
}
// /response/response.js
// ===========================
import { NextResponse } from 'next/server';
 
export async function GET(req, res) {
    console.log("====GET====");
    console.log(req.body);
    return NextResponse.json("get");
}

export async function POST(req) {
    const body = req.body;
    console.log(body);
  return NextResponse.json("post");
}

我填写了表格,浏览器就会正确地路由到"POST"回复,并在我提交时转发到"GET"回复列表.但是,在服务器端,会记录响应正文:

ReadableStream { locked: false, state: 'readable', supportsBYOB: false }

当我阅读链接以及关于nextjs和处理POST请求的所有其他文档时,POST的内容就好像它是一个对象,而不是一个可读的流.此外,我在nextjs的网站上找不到任何显示如何解码可读流的内容,这似乎对一个常见任务来说是一个有点广泛的解决方案.

我很确定我错过了一些平凡的细节,比如把小数点放错了地方,但我需要帮助找到它.

感谢一群人!

克里斯·鲁德

推荐答案

由于您提交的表单为application/x-www-form-urlencoded,因此您可以按如下方式访问表单数据:

export async function POST(req) {
  const data = await req.formData();
  const firstName = data.get("first");
  const lastName = data.get("last");
  console.log({ firstName, lastName });
  return NextResponse.json("post");
}

Node.js相关问答推荐

Windows上使用ES6+的OpenAPI规范的Express服务器不接受嵌套路由'

错误:找不到模块';/var/apps/前端/bash';

如何在docker容器上正确安装nodejs?

为什么即使数据库确实更新了,此 POST 也无法解析并返回 200 代码?

在生产环境中,Nest实例启动时抛出不完整的导入错误

仅在 vue 脚本未退出的情况下使用 docker 时出现错误

无法截取页面截图

node_modules/preact/src/jsx.d.ts:2145:22 - 错误 TS2304:找不到名称SVGSetElement

如何找到特定文档并更新数组中特定键的值?

为什么我的 npm 脚本中的 glob 不起作用?

如何让 vscode 假设一个 node.js 上下文,以便它不假设 `fetch` 存在?

使用Typescript 时我应该避免循环导入吗?

仅显示用户在 Reactjs 中使用服务器端发布的帖子是 Node Js、Mongodb

Handlebars:访问已被拒绝解析来自的属性,因为它不是其父级的自己的属性

Node.js 表达的 Error 对象expose 了哪些属性?

Node.js + Express 上的多个视图路径

TypeError:winston.Logger 不是带有winston 和morgan 的构造函数

如何在 node 中转义 shell 命令的字符串?

从 zip 文件在 AWS 中创建 lambda 函数

安装Node.js 安装n 安装Node.js?