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

我正在构建这个学校项目,我们必须在 NodeJs 和自由选择的前端中创建自己的 API。我写了以下代码:[在公共地图] app.js


function 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.js


const 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}`)) 





慕桂英4014372
浏览 144回答 2
2回答

LEATH

你使用 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)}

神不在的星期二

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

相关分类

JavaScript