URL矩阵参数与查询参数
我想知道是在URL中使用矩阵还是查询参数。我发现对该主题的较早讨论并不令人满意。
例子
带有查询参数的URL:http://some.where/thing?paramA = 1&paramB = 6542
带有矩阵参数的URL:http://some.where/thing; paramA = 1; paramB = 6542
乍看之下,矩阵参数似乎只有优点:
更具可读性
不需要对XML文档中的“&”进行编码和解码
带有“?”的网址 在许多情况下不会被缓存;具有矩阵参数的URL被缓存
矩阵参数可以出现在路径的任何地方,并且不限于其结尾
矩阵参数可以具有多个值: paramA=val1,val2
但是也有缺点:
只有少数框架(如JAX-RS)支持矩阵参数
当浏览器通过GET提交表单时,这些参数成为查询参数。因此,对于同一任务,它以两种参数结束。为了不混淆REST服务的用户并限制服务开发人员的工作量,在此区域中使用始终查询参数会更容易。
由于服务的开发人员可以选择支持矩阵参数的框架,因此唯一的缺点是浏览器默认会创建查询参数。
还有其他缺点吗?你会怎么做?
回答:
重要的区别在于,矩阵参数适用于特定的路径元素,而查询参数适用于整个请求。当对多个级别的资源和子资源进行复杂的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之类的查询参数。
以上是 URL矩阵参数与查询参数 的全部内容, 来源链接: utcz.com/qa/413373.html