我想知道是在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服务的用户并限制服务开发人员的工作量,在此区域中使用始终查询参数会更容易。
由于服务的开发人员可以选择支持矩阵参数的框架,因此唯一的缺点是浏览器默认会创建查询参数。
还有其他缺点吗?你会怎么做?