Azure移动应用程序node.js后端 - 无法获取请求的内容

时间:2016-04-26 03:39:14

标签: javascript node.js azure azure-mobile-services

我想在Azure移动应用Node.js后端服务器中使用easy api。 但经过努力,我无法得到请求的内容。

有谁可以告诉我任何可能丢失的东西?

这是我的api(myApi.js):

module.exports = {
    "post": function (req, res, next) {
        for (var k in req) {
            console.log("%s: %j", k, req.k);
        }
        res.status(200).send('post');
    }
}

这是我的app.js:

var express = require('express'),
    azureMobileApps = require('azure-mobile-apps');

var app = express();

var mobile = azureMobileApps({
    // Explicitly enable the Azure Mobile Apps home page
    homePage: true
});

mobile.tables.import('./tables');

mobile.api.import('./api');

mobile.tables.initialize()
    .then(function () {
        app.use(mobile);    // Register the Azure Mobile Apps middleware
        app.listen(process.env.PORT || 3000);   // Listen for requests
    });

我用Postman发送请求。 邮差
enter image description here

这是我的控制台日志,正如您所看到的,请求的所有内容都是未定义的。 参数:未定义 查询:未定义 标题:未定义 url:undefined statusCode:undefined 身体:未定义 ...

2 个答案:

答案 0 :(得分:2)

您需要在移动应用服务器中安装body-parser模块,在移动应用入口app.js中配置正文解析器中间件。然后,您可以使用req.body来获取帖子正文内容。

您可以尝试以下步骤:

  1. 登录移动应用服务器的Kudu控制台站点或Visual Studio Online编辑器以修改脚本并运行npm命令。在根目录的"body-parser": "^1.13.1"文件的dependencies部分下添加package.json之类的正文解析器模块。运行npm update以安装依赖项。
  2. app.js中添加stmt:

    var bodyParser = require('body-parser');
    app.use(bodyParser.json({ limit: '50mb' }));
    app.use(bodyParser.urlencoded({ limit: '50mb', extended: true }));`
    
  3. 尝试使用Easy API中的代码段:

    module.exports = {
        "post":function(req,res,next){
            console.log(req.body)
            res.send(req.body)
        }
    };
    
  4. 在Postman中,使用x-www-form-urlencoded发布您的数据: enter image description here

答案 1 :(得分:0)

请尝试console.log("%s: %j", k, req[k]);

原因是变量k是一个字符串。因此,要通过其键作为字符串访问成员,您必须使用"数组表示法"