重要的区别在于,矩阵参数适用于特定的路径元素,而查询参数适用于整个请求。当对多个级别的资源和子资源进行复杂的REST样式查询时,这会起作用:
http://example.com/res/categories;name=foo/objects;name=green/?page=1
这实际上归结为命名空间。
注意:此处的资源“级别”为
categories和
objects。
如果仅查询参数用于多级URL,您将最终得到
http://example.com/res?categories_name=foo&objects_name=green&page=1
这样,您还将失去请求中参数局部性所增加的清晰度。此外,当使用类似JAX-RS的框架时,所有查询参数都将显示在每个资源处理程序中,从而导致潜在的冲突和混乱。
如果您的查询只有一个“级别”,那么区别并不是很重要,并且两种类型的参数可以有效地互换,但是,查询参数通常得到更好的支持并且得到更广泛的认可。通常,我建议您坚持使用诸如HTML表单和简单的单级HTTP API之类的查询参数。



