express:req.query和req.body之间的区别是什么

express:req.query和req.body之间的区别是什么,express,Express,我想知道req.query和req.body之间的区别是什么 下面是一段代码,其中使用了req.query。如果我使用req.body而不是req.query,会发生什么 下面的函数是调用$resourceget函数的结果。这个函数检查用户是否经过身份验证,是否是正确的用户 function isAuthenticated() { return compose() // Validate jwt .use(function(req, res, next) { // allow access_

我想知道req.query和req.body之间的区别是什么

下面是一段代码,其中使用了
req.query
。如果我使用
req.body
而不是
req.query
,会发生什么

下面的函数是调用
$resource
get函数的结果。这个函数检查用户是否经过身份验证,是否是正确的用户

function isAuthenticated() {
return compose()
// Validate jwt
.use(function(req, res, next) {
  // allow access_token to be passed through query parameter as well
  if(req.query && req.query.hasOwnProperty('access_token')) {
    req.headers.authorization = 'Bearer ' + req.query.access_token;
  }
  validateJwt(req, res, next);
})
// Attach user to request
.use(function(req, res, next) {
  User.findById(req.user._id, function (err, user) {
    if (err) return next(err);
    if (!user) return res.send(401);

    req.user = user;
    next();
  });
});
}
包含请求的查询参数

例如,在
sample.com?foo=bar
中,
req.query
将是
{foo:bar}

包含请求正文中的任何内容。这通常用于
PUT
POST
请求

例如,
POST
到sample.com,主体为
{foo:“bar”}
,标题为
application/json
req.body
将包含
{foo:“bar”}

因此,为了回答您的问题,如果您使用
req.body
而不是
req.query
,它很可能在body中找不到任何东西,因此无法验证jwt


希望这有帮助。

请求主体主要用于使用POST方法的表单。 您必须在表单属性中使用
enctype=“application/x-www-form-urlencoded”
。由于POST方法在URL中不显示任何内容,所以必须使用主体解析器中间件 如果表单包含name=“age”的输入文本,则req.body.age返回此字段的值

req.query获取URL中的参数(主要是GET方法) 此URL的示例►
app.get('/books/',(req,res)=>{console.log(req.query.author)}
将返回Asimov

顺便说一下,req.params将URL的结尾部分作为参数。 此URL的示例►
app.get('/books/:id',(req,res)=>{console.log(req.params.id)}
将返回14

req.params如何?您是否也可以指定req.params与req.body与req.query之间的差异?这是一个不同的问题,应该这样询问(或搜索)(params用于url值,如/user/:id->req.params.id)