Javascript 为什么我需要中间件来解析HTTP主体?
我试图理解RESTful API是如何工作的。我正在尝试使用ExpressJS路由POST请求。我的问题是Javascript 为什么我需要中间件来解析HTTP主体?,javascript,node.js,rest,express,http,Javascript,Node.js,Rest,Express,Http,我试图理解RESTful API是如何工作的。我正在尝试使用ExpressJS路由POST请求。我的问题是req.body.name总是返回undefined。换句话说,我无法访问HTTP请求主体中的数据 这是我用邮递员发送的请求 下面是响应中发送的错误消息 我已经阅读了几篇文章,我知道必须使用一些附加软件(也称中间件)来使请求体可读以表达(即解析请求)。但是我真的不明白为什么会这样。为什么我不能直接访问request.body.name 这是我的密码 const express = requ
req.body.name
总是返回undefined。换句话说,我无法访问HTTP请求主体中的数据
这是我用邮递员发送的请求
下面是响应中发送的错误消息
我已经阅读了几篇文章,我知道必须使用一些附加软件(也称中间件)来使请求体可读以表达(即解析请求)。但是我真的不明白为什么会这样。为什么我不能直接访问request.body.name
这是我的密码
const express = require('express');
const app = express();
app.get('/', (req,res)=>{
console.log('Im in the index');
res.send('Index page');
});
app.get('/parameterRoute/:id', (req,res)=>{
console.log('Im in parameterRoute');
res.send(req.params.id);
});
// This is the problem
app.post('/postRoute',(req,res) =>{
res.send(req.body.name);
});
这回答了你的问题吗?它确实澄清了一些事情,尽管我仍然不明白为什么不首先解析身体。让主体直接可访问不是比麻烦地添加中间件更好吗?这是另一个故事,已经在阅读本文时讨论过。请求主体不必是JSON。它可以是文本、表单和其他类型。您需要主体解析器来告诉express主体是什么类型。主体解析器读取内容类型头并检查它是否与您的配置匹配。然后它将主体解析为req.body对象。这是否回答了您的问题?它确实澄清了一些事情,尽管我仍然不明白为什么不首先解析身体。让主体直接可访问不是比麻烦地添加中间件更好吗?这是另一个故事,已经在阅读本文时讨论过。请求主体不必是JSON。它可以是文本、表单和其他类型。您需要主体解析器来告诉express主体是什么类型。主体解析器读取内容类型头并检查它是否与您的配置匹配。然后将主体解析为req.body对象。