express:req.query和req.body之间的区别是什么
我想知道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
,会发生什么
下面的函数是调用$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)}
将返回14req.params如何?您是否也可以指定req.params与req.body与req.query之间的差异?这是一个不同的问题,应该这样询问(或搜索)(params用于url值,如/user/:id->req.params.id)