ExpressJS中的req.query和req.param


89

req.queryreq.paramExpress之间的主要区别

  • 两者有何不同
  • 什么情况下何时使用

假设客户端在请求中发送说Android(密钥,值)对.....,使用哪个?

[编辑]

假设android发送一个POST请求->目的是向客户端发送(Key,Value)并且服务器应该基于服务器中的值执行数据库查询并返回JSON响应

看::这个问题的方案我引用:简单快速的程序,用于查询结果


1
你是说req.queryreq.param
ARB

1
是的!.........我也修改了问题

Answers:


115

req.query 解析查询字符串后,将返回JS对象。

?/用户名=汤姆和年龄= 55 -req.query将产生{name:"tom", age: "55"}

req.params将在匹配的路由中返回参数。如果您的路线是/ user /:id,并且您向/ user / 5发出请求-req.params将会产生{id: "5"}

req.param是将参数剥离请求的功能。所有这些都可以在这里找到。

更新

如果动词是aPOST并且您正在使用bodyParser,那么您应该可以使用req.body。那将是POSTed表单的解析后的JS版本。


谢谢,然后假设一个客户端在请求中发送了一个说Android(Key,value)的对........在Express中使用哪个?

如果没有看到有问题的请求,就无法回答这个问题。
ARB

请查看更新的问题.....我在我发布的问题之一中也提到了我正在快速使用的程序的链接.....请添加反馈!

@Iplay如果此答案对您有帮助,请考虑将其标记为该问题的答案。谢谢。
2014年

15

req.query是发送给服务器的查询字符串,例如/page?test = 1req.param是传递给处理程序的参数。

app.get('/user/:id', handler);,去/user/blahreq.param.id将返回blah;


谢谢,然后假设一个客户端在请求中发送了一个说Android(Key,value)对。

1
我不知道您在说什么,如果它是POST请求,它将在req.data,如果它是GET,将在req.param
OneOfOne 2013年

嗨,您能告诉我如何针对未定义的内容检查req.params吗?
Arj 1411年

@AnandRaj它将是空的,所以检查c.Param("id") == ""
OneOfOne

@OneOfOne,感谢您的答复。让我检查一下,它将更新您
Arj 1411年

14

我建议使用以下

req.param('<param_name>')

req.param(“”)的工作方式如下

查找按以下顺序执行:

req.params
req.body
req.query

为了清楚起见,应该倾向于直接访问req.body,req.params和req.query-除非您真正接受每个对象的输入。

参考:http : //expressjs.com/4x/api.html#req.param


1
嗨,您能告诉我如何针对未定义的内容检查req.params吗?
Arj 1411年

@AnandRaj未定义是什么意思?您是说未知参数吗?
Abhijit Gaikwad

我的意思是,当我检查req.params的类型时,它显示为undefined。我的目标是检查req.params。<任何URI参数>是否为空
Arj 1411年

@AnandRaj您可以发布您的代码吗?以下代码对我有用var express = require('express'); var app = express(); app.get('/',function(req,res){console.log(req.params); res.send(req.params);}); app.listen(3000);
Abhijit Gaikwad

@AnandRaj试试if(reqParams.hasOwnProperty('deviceType')){}
Abhijit Gaikwad

9

传递参数

GET request to "/cars/honda" 

返回本田汽车型号列表

传递查询

GET request to "/car/honda?color=blue"

会返回本田汽车型号的列表,但会对其进行过滤,因此仅返回具有蓝色的原色的型号。

将这些过滤器添加到URL参数(/ car / honda / color / blue)中没有任何意义,因为根据REST,这意味着我们要获取有关“蓝色”颜色的大量信息。由于我们真正想要的是本田模型的过滤列表,因此我们使用查询字符串来过滤返回的结果。

请注意,查询字符串实际上只是{键:值}对,格式略有不同:?key1 = value1&key2 = value2&key3 = value3。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.