我想知道是否在我的 URL 中使用矩阵或查询参数。我发现对该主题的较早讨论并不令人满意。
例子
- 带有查询参数的 URL:http://some.where/thing?paramA=1¶mB=6542
- 带有矩阵参数的 URL:http://some.where/thing;paramA=1;paramB=6542
乍一看,矩阵参数似乎只有优点:
- 更具可读性
- 不需要对 XML 文档中的“&”进行编码和解码
- 带有“?”的网址 很多情况下没有缓存;带有矩阵参数的 URL 被缓存
- 矩阵参数可以出现在路径中的任何地方,并且不限于它的末尾
- 矩阵参数可以有多个值:
paramA=val1,val2
但也有缺点:
- 只有像JAX-RS这样的少数框架支持矩阵参数
- 当浏览器通过 GET 提交表单时,参数变为查询参数。因此,对于同一任务,它最终会得到两种参数。为了不混淆 REST 服务的用户并限制服务开发人员的工作量,在这方面使用始终查询参数会更容易。
由于服务的开发者可以选择支持矩阵参数的框架,剩下的唯一缺点就是浏览器会默认创建查询参数。
还有其他缺点吗?你会怎么办?