Axios post request.body是空的对象

我正在尝试从我的反应中发布数据。 后端 – expression。 这是后端代码:

var express = require('express'); var app = express(); var bodyParser = require("body-parser"); var methodOverride = require("method-override"); var mongoose = require("mongoose"); var expressSanitizer = require("express-sanitizer"); mongoose.connect("mongodb://localhost/blog-react"); //app config app.set("view engine", "ejs"); app.use(express.static("public")); app.use(bodyParser.urlencoded({extended: true})); //must be after parser app.use(expressSanitizer()); app.use(methodOverride("_method")); //schema config var blogSchema = new mongoose.Schema({ title: String, image: String, body: String, //it should be date. With default value now. created: { type: Date, default: Date.now } }); var Blog = mongoose.model("Blog", blogSchema); function handle500(response, error){ console.log(error.stack); response.status(500); response.json({error: "error: internal server error"}); } app.post("/api/blogs", function(request, response){ var blog = { title: request.sanitize(request.body.title), image: request.sanitize(request.body.image), body: request.sanitize(request.body.body) }; console.log(request.body); Blog.create(blog, function(error, newBlog){ if(error){ console.log("inside post handler ERROR") handle500(response, error); } else{ console.log("inside post handler OK") response.json({status: "success"}); } }); }); 

反应代码:

  var requestUrl = "/api/blogs"; var blog = { title: "a", image: "b", body: "c" } axios.post(requestUrl, blog) .then(function(response){ console.log("success",response.data) }) .catch(function(response){ console.log("error", response); }); 

当我通过axios发布数据 – request.body始终是{}但是,如果我通过常规的forms发布数据 – 一切正确 – request.body包含所有预期的数据。

我在做什么与axios错误?

您缺less一个中间件bodyParser.json() 。 将其添加到您的configuration。

 mongoose.connect("mongodb://localhost/blog-react"); app.set("view engine", "ejs"); app.use(express.static("public")); app.use(bodyParser.json()); // <--- Here app.use(bodyParser.urlencoded({extended: true}));