【问题标题】:Difference between operators in a URLURL中运算符之间的区别
【发布时间】:2019-12-19 00:05:12
【问题描述】:
在 URL 中使用 : 和 ? 有什么区别?例如 /products/:id 和 /products?id=1?我正在尝试从Product.findById (req.params.id) 这样的 URL 中获取值,但我想知道哪个最合适。我知道使用 : 我必须使用 req.params 和 ? req.query 但我不明白它们之间的区别,它们是否相同?
【问题讨论】:
标签:
node.js
express
http
url
mongoose
【解决方案1】:
在我看来,如果你使用的是 RESTFUL API 模式,那就完全不同了
/products/:id调用路径参数
路径参数决定了您请求的资源。可以把它想象成一个自动应答机,它要求您按 1 进行服务,按 2 获得另一项服务,3 获得另一项服务,依此类推。
路径参数是端点本身的一部分,不是可选的
但查询参数
从技术上讲,查询参数不是 REST 架构的一部分,它们用于帮助您完全了解如何阅读和使用 API 的查询参数,让您可以选择使用键值对修改您的请求。
【解决方案2】:
在查询中包含您的参数在概念上对于路由器来说是可选的,查询参数更多是请求本身的属性和描述,就像说 GET /users?sort=asc 时一样,在这种情况下, sort 属性更多是对请求的描述,并且请求可以在没有它的情况下完成提取,但情况可能并非总是如此,但查询参数仍然描述其请求,即使它是强制性的.
另一方面,URL 参数是请求本身的一部分,没有参数的 URL 没有意义,例如 GET /users/:userID,在这种情况下,不提供 userID 将提供意外数据(例如用户列表)。 URL 参数在定义请求时发挥作用,而不仅仅是描述它,它们不能是可选的。