javascript - Express js req.body 返回空

标签 javascript mysql node.js express

我已经尝试了其他一些 stackoverflow 帖子中的所有解决方案,但没有解决我的问题。

这是我的app.js

var express = require('express');
var path = require('path');
var favicon = require('serve-favicon');
var logger = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');



var app = express();

// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');

// uncomment after placing your favicon in /public
//app.use(favicon(path.join(__dirname, 'public', 'favicon.ico')));
app.use(logger('dev'));
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));

var index = require('./routes/index');
var v1    = require('./routes/route');

app.use('/', index);
//routes for api
app.use('/v1',v1);

这是我的post Controller

module.exports = {

    createUser:function (req,res) {
        console.log(req.body);
        res.send('ok'+req.body.test);
    }
}

req.body 返回 {},即使请求正文包含参数也是如此。

我正在使用 postman 插件检查 api。

更新

postman 请求

enter image description here

最佳答案

body-parser

bodyParser 对象公开各种工厂来创建中间件。所有中间件都将使用已解析的正文填充 req.body 属性,如果没有要解析的正文(或返回错误),则填充一个空对象 {}


app.use(bodyParser.urlencoded({ extended: true })); // for encoded bodies

A new body object containing the parsed data is populated on the request object after the middleware, req.body will contain the parsed data, this object will contain key-value pairs, where the value can be a string or array

内容类型是application/x-www-form-urlencoded


app.use(bodyParser.json()); // for json encoded bodies

A new body object containing the parsed data is populated on the request object after the middleware (i.e. req.body).

内容类型是application/json


application/json 在您像这样发布数据 {"test":"hello"} 时使用。 www-form-url-encoded 用于在使用 app.use(bodyParser.urlencoded({ extended: true })) 时从 url 获取对象中的数据作为键值;。它们都是不同的并且有自己的用例

关于javascript - Express js req.body 返回空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43227729/

相关文章:

mysql - 如何在 Excel 中自动执行 SQL 脚本

macos - 尝试设置广播标志时出现异常

javascript - 尝试通过 mocha 调试程序(使用 --debug-brk)调试 mocha 本身

javascript - 在数据库中存储 Javascript Delta 对象

javascript - 在 Angularjs 中执行 foreach 循环时如何保持数组顺序

mysql - 为什么使用子查询时结果会重复?

javascript - 需要多人游戏服务器配置的建议

javascript - 鼠标移动后动画停止( Canvas )

ajax - XMLHttpRequest 对象重用或新实例

mysql - 使用 MySQL 作为源的 Solr DataImportHandler - 处理 json 类型列