浏览了stackoverflow上的几个帖子后,我仍然不太了解URL中使用查询参数是否被认为是静止的。例如,给定一个地址http://www.example.com/product.php?productid=123。这是一个宁静的设计吗?我的直觉说,这是因为它等同于向服务器发送HTTP获取请求以从数据库中获取相应的数据。
如果这是一个宁静的设计,我的第二个问题是,只有我们只使用此"查询参数"样式,我们才能实现HTTP?例如,我们永远无法通过将URL与查询参数?productID=123
一起使用HTTP POST请求,对吗?谢谢。
路径参数和查询参数应在不同的方案中使用:
路径参数:
尝试通过ID访问资源时,应该使用它。例如
example/products/123456
上方您正在获得ID 123456的产品。
如果您有子资源,例如:
example/products/123456/comments/1324
上方,您将ID 1324的评论带入ID 123456的产品中。
查询参数:
尝试使用与ID不同的过滤器查询资源时,应该使用它。例如:
example/products?kind=food
上面您正在获取它们善良食物的所有产品。
如果您有更多的过滤器,例如:
example/products?kind=food&priceLessThan=1200
上方,您正在获取它们善良的食物和价格的所有产品少于1200。您应该考虑到查询参数不需要将字段匹配到产品资源中,在这种情况下,价格是字段进入产品,而不是Pricelessthan,此名称只是过滤资源的逻辑。
此外,您可以这样排序和小屋:
example/products?kind=food&priceLessThan=1200&sortBy=name&page=10
如您所见,查询参数更灵活,因此,我们应该将其用于过滤。
发表查询参数:
您可以使用它,但是,这应该很奇怪。POST方法用于创建新资源并进入请求主体,您可以将创建它(例如JSON或XML(创建所需的所有信息。
我创建资源时您需要一些元数据,建议使用请求标题。
a(您可以使用查询参数。您可以使用路径段。或者您可以两者都使用。您的选择。
b(是的,您可以使用查询参数发布到URI。