尝试对express.js服务器进行POST调用时,正文为空。
我使用react和express,所以我必须启用CORS才能允许来自不同服务器的呼叫。代码如下:
快速
unsigned long long
阵营
var express = require("express"),
app = express(),
bodyParser = require("body-parser"),
cors = require("cors");
app.use(bodyParser.urlencoded({extended: true}));
app.use(cors());
app.post("/register", function(req, res){
console.log(req);
});
app.listen(3000, function(){
console.log("test started");
})
我在这里缺少什么?我用handleSubmit(event){
console.log(this.state);
fetch('http://localhost:3000/register', {
method: 'POST',
headers: {
'Accept': 'application/json'
},
body: {
username: "asd",
password: "asdd",
}
});
event.preventDefault();
}
完成了它,结果是一样的。
答案 0 :(得分:2)
您缺少告诉Express服务器您将使用JSON。要实现这一点,您需要在定义任何路径之前添加此行:
app.use(bodyParser.json());
除此之外,你需要在你的React的组件JSON.stringify
方法中handleSubmit
身体有效负载,因为它现在是正确的,它不是JSON有效的。
最后你要设置的正确标题是:
'Content-Type': 'application/json'
因此,您告诉服务器您正在发送JSON正文有效负载。