我想在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
});
这是我的控制台日志,正如您所看到的,请求的所有内容都是未定义的。 参数:未定义 查询:未定义 标题:未定义 url:undefined statusCode:undefined 身体:未定义 ...
答案 0 :(得分:2)
您需要在移动应用服务器中安装body-parser模块,在移动应用入口app.js
中配置正文解析器中间件。然后,您可以使用req.body
来获取帖子正文内容。
您可以尝试以下步骤:
npm
命令。在根目录的"body-parser": "^1.13.1"
文件的dependencies
部分下添加package.json
之类的正文解析器模块。运行npm update
以安装依赖项。在app.js
中添加stmt:
var bodyParser = require('body-parser');
app.use(bodyParser.json({ limit: '50mb' }));
app.use(bodyParser.urlencoded({ limit: '50mb', extended: true }));`
尝试使用Easy API中的代码段:
module.exports = {
"post":function(req,res,next){
console.log(req.body)
res.send(req.body)
}
};
答案 1 :(得分:0)
请尝试console.log("%s: %j", k, req[k]);
。
原因是变量k
是一个字符串。因此,要通过其键作为字符串访问成员,您必须使用"数组表示法"