当我向后端Express服务器发送POST请求时,req.body
仅包含密钥部分,其中整个主体是密钥,而值部分为空
这是前端获取请求
let data = {
videoUrl: "dummy text"
}
fetch("/api/getinfo", {
method:"POST",
headers: {
"Content-Type": "application/x-www-form-urlencoded;charset=UTF-8"
},
body: JSON.stringify(data)
})
这是我在后端处理的方式(注意:我正在使用body-parser
)
app.post("/api/getinfo", (req,res) => {
console.log(req.body);
}
我希望输出为
'{ "videoUrl":"dummy text" }'
但是我得到的是
{ '{"videoUrl":"dummy text"}': '' }
整个请求正文是键,值是空的。
我在做什么错了?
答案 0 :(得分:3)
您使用了错误的Content-Type发送json
尝试
"Content-Type": "application/json;charset=UTF-8"
答案 1 :(得分:1)
我注意到您的标头中存在问题;
fetch("/api/getinfo", {
method:"POST",
headers: {
"Content-Type": "application/x-www-form-urlencoded;charset=UTF-8" //this very line
},
我猜你的意思是
fetch("/api/getinfo", {
method:"POST",
headers: {
'Content-type': 'application/json; charset=utf-8'
},
注意:您的标头表示内容的编码内容。不一定可以从内容本身推断出内容的类型,即,您不一定只看内容并知道该怎么办。因此,您需要确定标题中写的是什么,否则最终将出现错误。
我建议您阅读有关What does “Content-type: application/json; charset=utf-8” really mean?
的更多信息答案 2 :(得分:0)
问题在于您要对数据进行字符串化处理
body: JSON.stringify(data)
应该是
body: data
那应该解决