node.js - Express 4 中未定义 POST 正文

标签 node.js post express

我试图发布到 Express 4 中的路线,但是当我尝试记录正文时,我收到未定义的消息,这是我的配置:

/server.js

/* main module entry point */
'use strict';

var express    = require( './server/node_modules/express' );
var bodyParser = require( './server/node_modules/body-parser' );
var env        = require( './server/env' );
var app        = module.exports = express();

app.use( require( './server/modules/auth' ) );

app.use( express.static( __dirname + '/client/' ) );

app.use( bodyParser.urlencoded( {
    extended: true
} ) );

app.use( bodyParser.json() );

app.get( '/*', function ( require, response ) {

    response.sendFile( __dirname + '/client/index.html' );

} );

app.listen( env.port, function () {

    console.log( 'Listening to port ' + env.port );

} );

/server/modules/auth/index.js

module.exports = (function () {

    var express = require('express'),
        router = express.Router(),
        signin = require('./signin.controller');

    router.route( '/signin' )
        .get( signin.get )
        .post( signin.post );

    return router;

})();

/server/modules/auth/sigin.controller.js

module.exports = (function () {

models = require( '../../database/models' );

function get( request, response ) {

    models.users.findAll().then( function ( users ) {

        response.json( users );

    } );
    console.log( 'Sign In' );

}

function post( request, response ) {

    console.log( 'Sign In ' + request.body );//Returns "Sign In Undefined"
    response.send('Signed In'+ request.body);

}

return {
    get: get,
    post: post
}

})();

代码有什么问题吗?,我用postman测试一下: postman

我使用的标题是:

内容类型:application/json

最佳答案

顺序很重要。试试这个:

/* main module entry point */
'use strict';

var express    = require( './server/node_modules/express' );
var bodyParser = require( './server/node_modules/body-parser' );
var env        = require( './server/env' );
var app        = module.exports = express();

app.use( express.static( __dirname + '/client/' ) );

app.use( bodyParser.urlencoded( {
    extended: true
} ) );

app.use( bodyParser.json() );

app.use( require( './server/modules/auth' ) );

app.get( '/*', function ( require, response ) {

    response.sendFile( __dirname + '/client/index.html' );

} );

app.listen( env.port, function () {

    console.log( 'Listening to port ' + env.port );

} );

基本上,您是在告诉 Express 在 auth.js 中的中间件运行之前不要解析正文内容。

关于node.js - Express 4 中未定义 POST 正文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33535366/

相关文章:

node.js - 导出 Node.js 模块中的对象

html - 如何使用 extJS 发布 json 数据

javascript - foreach 在对象 id 上的 Node 问题

node.js - Node ,使用基本身份验证 header 向外部 API 表达 API 代理请求

javascript - express - 如何在对 API 的请求中读取 HttpOnly cookie?

forms - 表单提交中的 POST/GET Action

javascript - ER_PARSE_ERROR mysql错误,语法错误errno : 1064

javascript - 主干模型——扩展api调用

javascript - AdonisJs 中的 not_required_when 验证器

Symfony2 <a> 链接 'post' 或 'delete' 或 'put' 方法