POST 请求适用于 Postman,但不适用于 axios.post()

Posted

技术标签:

【中文标题】POST 请求适用于 Postman,但不适用于 axios.post()【英文标题】:POST request works with Postman but not with axios.post() 【发布时间】:2022-01-21 07:35:53 【问题描述】:

我在React-JSREST-api 中使用节点创建了一个Note 应用程序,我同时运行前端和服务器。 这是我的 REST-Api(我使用 mongoDB 来存储数据)

app.post('/api/post',(req,res)=>
let title = req.body.title
let content = req.body.content
console.log(title)
console.log(content)
const newNote = new Note (
        title: title,
        content: content
    )
newNote.save())

这是我的 App.jsx 文件中的 axios.post

function addItem(item)
axios.post("http://localhost:4000/api/post",
  title:item.title,
  content:item.content
)
.then(res =>
  console.log(res)
)
.catch(error=>
  console.log(error)
)

POST 请求通过 Postman 完美运行,并且我的数据被存储。但是对于 axios.post 函数,它确实将发布请求发送回我的 api,但是当我 console.log(title)console.log(content) 控制台返回 undefined 并且一个空对象被发送回我的 mongoDB 数据库中的 Note 集合时。我有尝试在线查找问题,但无法找到解决方案。任何帮助将不胜感激。

这是我的整个 express rest API 代码

const express = require("express");
const app = express();
const mongoose = require("mongoose")
const cors = require("cors")

app.use(express.static('public'))
app.use(express.urlencoded(extended:true)) //this line is to parse any information from forms
app.use(cors())
app.set('view engine', 'ejs')
const PORT = 4000

main().catch(err => console.log(err));

async function main() 
  await mongoose.connect('mongodb://localhost:27017/keeperDB');


const notesSchema = new mongoose.Schema(
    title:String,
    content:String
)
const Note = mongoose.model("Note",notesSchema)

app.get("/api", function(req, res)
  Note.find(function(err,results)
    if (err)
      console.log(err)
    else
        res.json(results)   
    
  )
);
app.post('/api/post',(req,res)=>

    let title = req.body.title
    let content = req.body.content
    console.log(title)
    console.log(content)
    const newNote = new Note (
            title: title,
            content: content
        )
    newNote.save()
)


app.listen(PORT, function()
  console.log(`Server started on port $PORT.`);
);

`

【问题讨论】:

您的浏览器控制台有错误吗? 我的浏览器控制台根本没有任何输出@AselaPriyadarshana 请添加包含 express 中间件的 express rest API 代码 嗨,我已经添加了我的快递文件@AselaPriyadarshana 尝试在 app.use(cors()) 代码行之后添加 app.use(express.json()) 【参考方案1】:

app.use(express.json()) 中间件添加到您的代码中,否则快递服务器无法从请求中提取 JSON 数据

【讨论】:

【参考方案2】:

您的请求对象似乎不是JSON 对象,您需要使用app.use(express.json())

【讨论】:

以上是关于POST 请求适用于 Postman,但不适用于 axios.post()的主要内容,如果未能解决你的问题,请参考以下文章

POST 请求适用于 Postman,但不适用于 axios.post()

请求适用于Postman,但不适用于axios.post

HTTP POST 请求适用于 Postman,但不适用于我的 Web 应用程序的 JavaScript 提取 [关闭]

Multipart POST 适用于 Postman,但不适用于 Angular Http Client

GET 请求适用于 Postman,但为啥它不适用于 ReactJS fetch?

Axios 发布请求适用于 Postman,但不适用于浏览器(它返回“错误 401-未授权”)