当尝试对 express.js 服务器进行 POST 调用时,正文为空。
我正在使用 React 和 Express,所以我必须启用 CORS 以允许来自不同服务器的调用。代码如下:
express
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");
})
react
handleSubmit(event){
console.log(this.state);
fetch('http://localhost:3000/register', {
method: 'POST',
headers: {
'Accept': 'application/json'
},
body: {
username: "asd",
password: "asdd",
}
});
event.preventDefault();
}
我在这里错过了什么?我用 'Content-Type': 'application/json'
完成了,结果是一样的。
最佳答案
您没有告诉您的 Express 服务器您将使用 JSON。为此,您需要在定义任何路由之前添加这一行:
app.use(bodyParser.json());
除此之外,您还需要JSON.stringify
React 组件handleSubmit
方法中的正文有效负载,因为就目前而言,它不是有效的JSON。
最后,您必须设置的正确 header 是:
'Content-Type': 'application/json'
因此您告诉服务器您正在发送 JSON 正文有效负载。
关于javascript - Express 应用程序上的空请求正文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48570361/