从请求中获取POST数据

时间:2017-08-28 14:25:59

标签: node.js slack

我需要从我收到的请求中提取POST数据(使用Slack Slash Commands,我基本上想检查调用命令的通道,并且只在某些特定通道中执行它。)

我对NodeJs比较陌生,所以我经常对请求之类的东西很不满意,欢迎提供精确的帮助。

(小细节:当尝试不同的方法时,我注意到如果我请求来自Slack的 response.js ,Slack将不会显示我在shell中看到的相同日志,而是显示聊天中的整个代码。我做错了吗?)

编辑:我正在使用Express。

修改2:添加了request.jsresponse.js

request.js

var request = require('request');
var requestData = {
    "token" : "XXXXXXXX",
    "team_id" : "XXXXX"
}
var options = {
    url : 'http://XX.XXX.XX.XX/request/response.js',
    method : 'POST',
    json : requestData
}

request(options, function(err, res, body) {
    console.log("requesting");
    if (err)
        console.log("error, mate");
    else
        console.log("no worries");
})

response.js

const express = require('express')
const app = express()

var bodyParser = require('body-parser');
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));

app.post('/request/response.js', function (req, res) {
    var post_body = req.body;
    console.log(post_body);
})

app.listen(3000, function() {
    console.log("listening");
})

1 个答案:

答案 0 :(得分:3)

要读取POST数据,您需要 body-parser 。首先使用命令行安装它:

npm install body-parser --save

然后,将其包含在主app.js文件中:

var bodyParser = require('body-parser');
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));

最后在 POST 路线中使用它,你使用req.body

app.post('/api/postRoute', function(req, res) {
    var post_body = req.body;
    // Return the POST message
    res.send(post_body);
});

你的完整回复.js应该是这样的:

const express = require('express')
const app = express()
var bodyParser = require('body-parser');
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));

app.post('/api/postRoute', function(req, res) {
    var post_body = req.body;
    // Return the POST message
    res.send(post_body);
});

app.listen(3000, function () {
  console.log('Example app listening on port 3000!')
});

然后使用以下命令从命令行启动它:

node response.js

然后你将请求发送到URL:     http://localhost:3000/api/postRoute