next.js 未发送下一个API路由数据

pcww981p  于 2023-04-30  发布在  其他
关注(0)|答案(1)|浏览(140)

我在用Next。js 13的API路由我向路由发送一个字符串数组,我希望它在响应中作为返回值输出。然而,我得到的所有我得到下面的错误。在Chrome调试器中,我也没有看到实际应该发送的数组。如果我在FormData中将整个内容更改为一个简单的字符串,也不会发送任何内容

const sendToAPI = () => {
const data = new FormData();
data.append("urls", JSON.stringify(downloadUrls));

fetch("/api/uploadToMongoDB", {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
  },
  body: JSON.stringify(data),
})
  .then((res) => {
    console.log(res);
  })
  .catch((e) => console.log(e));
};

/API/uploadToMongoDB.ts

export default async function handler(
req: NextApiRequest,
res: NextApiResponse
) {

 if (req.method !== 'POST') {
    res.status(405).send({ message: 'Only POST requests allowed' })
    return
  }

  const body = await JSON.parse(req.body)

  res.status(200).json({ message: `You submitted the following data: ${body}` })

}

错误- pages\API\uploadToMongoDB。ts(14:30)@ parse error - Error [SyntaxError]:JSON中位置1处的意外标记o

w46czmvw

w46czmvw1#

试着用

body: JSON.stringify({ urls: downloadUrls })

而不是使用FormData。FormData不是JSON,因此无法进行转换。如果需要在实现中包含FormData,请考虑使用

body: JSON.stringify(Object.fromEntries(data));

如果还是不行,请告诉我!

相关问题