【发布时间】:2011-01-04 02:57:05
【问题描述】:
我想知道是否在我的网址中使用矩阵或查询参数。我发现一个较旧的discussion 对该主题不满意。
例子
- 带有查询参数的 URL:http://some.where/thing?paramA=1¶mB=6542
- 带有矩阵参数的 URL:http://some.where/thing;paramA=1;paramB=6542
乍一看矩阵参数似乎只有优点:
- 更具可读性
- 不需要对 XML 文档中的“&”进行编码和解码
- 带有“?”的 URL很多情况下没有缓存;带有矩阵参数的 URL 被缓存
- 矩阵参数可以出现在路径中的任何地方,并且不限于它的结尾
- 矩阵参数可以有多个值:
paramA=val1,val2
但也有缺点:
- 只有JAX-RS 等少数框架支持矩阵参数
- 当浏览器通过 GET 提交表单时,参数变为查询参数。因此,对于同一任务,它最终会得到两种参数。为了不让 REST 服务的用户感到困惑并限制服务开发人员的工作量,在这方面使用始终查询参数会更容易。
由于服务的开发者可以选择支持矩阵参数的框架,剩下的唯一缺点就是浏览器会默认创建查询参数。
还有其他缺点吗?你会怎么做?
【问题讨论】:
-
我不确定矩阵 URL 有什么大不了的。根据 TBL 撰写的 w3c 设计文章,这只是一个设计理念,并明确指出它不是网络的一个特性。使用它时没有实现诸如相对 URL 之类的东西。如果您想使用它,那很好;只是没有标准的使用方式,因为它不是标准。
-
@Steve Pomeroy:这是你提到的文章吗:w3.org/DesignIssues/MatrixURIs.html
-
@Marcel:是的。对于那些考虑矩阵 URL 的人,请注意文档顶部的“状态:个人视图”。
-
矩阵参数可以有多个值吗?真的吗?
-
查询参数也可以有多个值:some.where/thing?paramA=1¶mA=6542
标签: http url rest parameters jax-rs