node.js post 方法 req.body 即使 body-parser 也未定义
node.js post method req.body undefined even with body-parser
大家好,我正在使用 node js 来使用 dialogflow 聊天机器人,
我正在尝试从 http 请求中获取参数 post 方法
我为此使用了 postman 是的,我确实在 header 中将内容类型设置为 json ,我的请求有以下代码 body :
{
"text":"hello"
}
及以下link
http://localhost:5000/api/df_text_query
我有以下 index.js 文件:
const express = require('express');
const bodyParser = require('body-parser');
const app = express();
require('./routes/dialogFlowRoutes')(app);
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }))
app.get('/',(req , res)=>{
res.send({'hello':'Johnny'});
});
const PORT = process.env.port || 5000;
app.listen(PORT);
这是我的 dialogflowRoutes.js 文件:
const dialogflow = require('dialogflow');
const config = require('../config/keys');
const sessionClient = new dialogflow.SessionsClient();
const sessionPath = sessionClient.sessionPath(config.googleProjectID, config.dialogFlowSessionID);
module.exports = app => {
app.get('/', (req, res) => {
res.send({ 'hello': 'world!' })
});
app.post('/api/df_text_query', async (req, res) => {
console.log(req.body)
const request = {
session: sessionPath,
queryInput: {
text: {
text: req.body.text,
languageCode: config.dialogFlowSessionLanguageCode
}
}
};
let responses = await sessionClient
.detectIntent(request);
res.send(responses[0].queryResult)
});
app.post('/api/df_event_query', (req, res) => {
res.send({ 'do': 'event query' })
});
}
这是我发送以下请求时收到的错误
dialogFlowRoutes.js:17
text: req.body.text,
^
TypeError: Cannot read property 'text' of undefined
初始化中间件的顺序很重要。
您必须在对正文执行操作之前对其进行解析。初始化 bodyParser 后移动路由中间件,如下所示:
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }))
require('./routes/dialogFlowRoutes')(app);
大家好,我正在使用 node js 来使用 dialogflow 聊天机器人,
我正在尝试从 http 请求中获取参数 post 方法
我为此使用了 postman 是的,我确实在 header 中将内容类型设置为 json ,我的请求有以下代码 body :
{
"text":"hello"
}
及以下link http://localhost:5000/api/df_text_query
我有以下 index.js 文件:
const express = require('express');
const bodyParser = require('body-parser');
const app = express();
require('./routes/dialogFlowRoutes')(app);
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }))
app.get('/',(req , res)=>{
res.send({'hello':'Johnny'});
});
const PORT = process.env.port || 5000;
app.listen(PORT);
这是我的 dialogflowRoutes.js 文件:
const dialogflow = require('dialogflow');
const config = require('../config/keys');
const sessionClient = new dialogflow.SessionsClient();
const sessionPath = sessionClient.sessionPath(config.googleProjectID, config.dialogFlowSessionID);
module.exports = app => {
app.get('/', (req, res) => {
res.send({ 'hello': 'world!' })
});
app.post('/api/df_text_query', async (req, res) => {
console.log(req.body)
const request = {
session: sessionPath,
queryInput: {
text: {
text: req.body.text,
languageCode: config.dialogFlowSessionLanguageCode
}
}
};
let responses = await sessionClient
.detectIntent(request);
res.send(responses[0].queryResult)
});
app.post('/api/df_event_query', (req, res) => {
res.send({ 'do': 'event query' })
});
}
这是我发送以下请求时收到的错误
dialogFlowRoutes.js:17
text: req.body.text,
^
TypeError: Cannot read property 'text' of undefined
初始化中间件的顺序很重要。
您必须在对正文执行操作之前对其进行解析。初始化 bodyParser 后移动路由中间件,如下所示:
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }))
require('./routes/dialogFlowRoutes')(app);