Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js URL中运算符之间的差异_Node.js_Express_Http_Url_Mongoose - Fatal编程技术网

Node.js URL中运算符之间的差异

Node.js URL中运算符之间的差异,node.js,express,http,url,mongoose,Node.js,Express,Http,Url,Mongoose,在URL中使用:和有什么区别??例如/products/:id和/products?id=1?我试图从URL获取如下值Product.findById(req.params.id),但我想知道哪一个最合适。我知道使用:我必须使用req.params和吗?req.query但我不理解它们之间的区别,它们是相同的吗?在我看来,如果使用RESTFUL API模式,这是完全不同的 /products/:id调用路径参数 路径参数确定您请求的资源。把它想象成一台自动答录机,要求你按1键进行服务,按2键进行

在URL中使用有什么区别??例如/products/:id/products?id=1?我试图从URL获取如下值
Product.findById(req.params.id)
,但我想知道哪一个最合适。我知道使用我必须使用
req.params
吗?
req.query
但我不理解它们之间的区别,它们是相同的吗?

在我看来,如果使用RESTFUL API模式,这是完全不同的

/products/:id
调用路径参数

路径参数确定您请求的资源。把它想象成一台自动答录机,要求你按1键进行服务,按2键进行另一项服务,按3键进行另一项服务,依此类推。 路径参数是端点本身的一部分,不是可选的

但是查询参数

从技术上讲,查询参数不是REST体系结构的一部分,它们用于帮助您完全理解如何读取和使用API的查询参数,从而为您提供了使用键值对修改请求的选项


在查询中包含参数在概念上对路由器来说是可选的,查询参数更多的是请求本身的属性和描述,比如说GET/users?sort=asc,在这种情况下,sort属性更多的是对请求的描述,请求可以在没有它的情况下完成提取,情况可能并非总是如此,但查询参数仍然描述其请求,即使它是必需的

另一方面,URL参数是请求本身的一部分,没有参数的URL没有意义,如GET/users/:userID,在这种情况下,如果没有完全中断路由器,不提供userID将提供意外数据(例如用户列表)。URL参数在定义请求时起作用,而不仅仅是描述请求,而且它们不能是可选的