从请求中获取POST数据
问题描述:
我需要从我将收到的请求中提取POST数据(使用Slack Slash Commands,我基本上想检查命令被调用的通道并且只在某些特定通道中执行它)。从请求中获取POST数据
我对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");
})
答
要读取POST数据,你需要身体解析器。首先,您使用命令行安装:
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);
});
你的全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('/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
然后你POST请求的网址: http://localhost:3000/api/postRoute
你使用一个框架的NodeJS,像特快例子吗? – CCH
是的,快递!编辑主帖。 –
你可以发布你到目前为止的代码吗?而你的快递版本 – CCH