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-JS
和REST-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()
HTTP POST 请求适用于 Postman,但不适用于我的 Web 应用程序的 JavaScript 提取 [关闭]
Multipart POST 适用于 Postman,但不适用于 Angular Http Client