为了账号安全,请及时绑定邮箱和手机立即绑定

POST 请求不起作用——发送空对象 [NodeJS]

POST 请求不起作用——发送空对象 [NodeJS]

慕桂英4014372 2022-12-22 11:40:56
我正在构建这个学校项目,我们必须在 NodeJs 和自由选择的前端中创建自己的 API。我写了以下代码:[在公共地图] app.jsfunction getAll() {    console.log("Get all")    makeRequest("/poems", "GET")} async function getRandomPoem() {    const ids = [1, 2, 3, 4, 5, 6, 7]    const randomId = ids[Math.floor(Math.random() * ids.length)]    const arrayofPoems = await fetch("/poems/" + randomId, {method: "GET"})    const data = await arrayofPoems.json()    const titleBox = document.getElementById("title")    const authorBox  = document.getElementById("author")    const textBox = document.getElementById("text")    titleBox.innerText = data.title    authorBox.innerText = data.author  textBox.innerText = data.text}function addPoem() {    event.preventDefault();    let title = document.getElementById("titleInput").value    let author = document.getElementById("authorInput").value    let text = document.getElementById("textInput").value    let newPoem = [{        id: 8,        title: "Aaa",        author: "Ccc",        text: "Ddd"    }]    makeRequest("/poems/", "post", newPoem)}async function makeRequest(url, reqMethod, body) {        const response = await fetch(url, {      //  headers = { "Content-Type": "application/json" },        method: reqMethod,        body:JSON.stringify(body)    })    console.log(response)    const data = await response.json()    console.log(data)}[这里是对本地服务器的请求] server.jsconst express = require('express');const { poems } = require('./Poems/poemsArray');const app = express();const port = 8080;const allPoems = require('./Poems/poemsArray')app.use(express.json())app.use("/", express.static('public'))app.listen(port, console.log(`App listening on port ${port}`)) 
查看完整描述

2 回答

?
LEATH

TA贡献1936条经验 获得超6个赞

你使用 headers = 这是无效的。尝试标头:{}。当你得到空对象时,尝试记录请求。也有可能正文作为字符串发送,express.json() 中间件无法解析数据。结果,您得到空对象。


async function makeRequest(url, reqMethod, body) {

    

    const response = await fetch(url, {

        headers : { "Content-Type": "application/json" },

        method: reqMethod,

        body:JSON.stringify(body)

    })

    console.log(response)

    const data = await response.json()

    console.log(data)

}


查看完整回答
反对 回复 2022-12-22
?
神不在的星期二

TA贡献1963条经验 获得超6个赞

如果您在一段时间后尝试访问邮递员,它也可能在发送正文时引起问题。在我的例子中,我已经完成了 API 中的所有更改,添加了路由器,删除了验证等,但最后罪魁祸首是邮递员,因为无论我发送什么数据,它都将 request.body 显示为 {}(空)。在我重新安装邮递员后它工作了!我只是觉得更快乐,我花了3-4个小时所以你也可以考虑这个选项。



查看完整回答
反对 回复 2022-12-22
  • 2 回答
  • 0 关注
  • 101 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信