我将我的反应应用程序的状态发送到服务器(与前端服务器不同)。
request.post('http://localhost:8000/guide')
.send(JSON.stringify(this.state))
.end((err, resp) => {
if (err) console.log('Error: ' + err);
else {
console.log(resp.text);
}
});
问题出在接收端(后端服务器),我在req.body上得到以下内容:
{ '{"mainColor":"#F44336","accentColor":"#FFC107","appName":"sasa"}': '' }
我可以解决这个问题,但我很想找到正确的方法来做到这一点,我试图在没有JSON.stringify的情况下发送我的状态,但我无能为力在我的后端需要的身体。我也尝试了很多其他的东西,但无法让它以正确的方式运作。非常感谢你!
答案 0 :(得分:0)
我的建议,
// http request code... use XMLHttpRequest instead of SuperAgent
let http = new XMLHttpRequest();
http.open('POST','http://localhost:8080/guide');
http.onload = ()=>{
if (http.status >=200 && http.status <300){
console.log(http.responseText);
}
};
let state = this.state;
http.setRequestHeader("Content-Type", "application/json");
http.send(JSON.stringify(state)); // send state as payload
// server.js in nodejs
var express = require('express');
var bodyParser = require('body-parser');
var app = express();
app.use(bodyParser.json({limit: '100mb'}));
app.use('/guide', function(req, res){
var payload = req.body; // payload varibale has your state object
})
在此server.js中包含正文解析器,它负责您的请求正文并解析您的有效负载对象。