我需要从我收到的请求中提取POST数据(使用Slack Slash Commands,我基本上想检查调用命令的通道,并且只在某些特定通道中执行它。)
我对NodeJs比较陌生,所以我经常对请求之类的东西很不满意,欢迎提供精确的帮助。
(小细节:当尝试不同的方法时,我注意到如果我请求来自Slack的 response.js ,Slack将不会显示我在shell中看到的相同日志,而是显示聊天中的整个代码。我做错了吗?)
编辑:我正在使用Express。
修改2:添加了request.js
和response.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");
})
答案 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