作者:sx-March23 | 2023-09-01 14:50
查询参数:http://example.com/apples?order=random&color=blue
矩阵参数:http://example.com/apples;order=random;color=blue
应该何时使用查询参数与矩阵参数?
为什么矩阵参数可以在URL的中间使用,但查询参数不能?例如:http://example.com/apples;order=random;color=blue/2006/archive
如果矩阵参数是查询参数的超集,为什么不一直使用它们呢?
您可以在此处阅读有关矩阵参数的更多信息:http://www.w3.org/DesignIssues/MatrixURIs.html
1> 小智..:
Matrix参数和查询参数之间的差异远不止于常规.
主要区别是:
带有查询参数的网址不会被中介/代理缓存(目前)
矩阵参数可以出现在路径的任何位置
计算相对uri是不同的
查询参数通常被滥用来添加新动词而不是在资源上使用现有方法
矩阵参数不是资源,它们是帮助引用难以在层次结构内表示的信息空间中的资源的方面
我已经在查询与矩阵参数中更详细地编写了更多参考文献
这个答案是3/5错了.相对URI的差异以及在路径中间嵌入参数的能力都是正确的.所有其他点都是错误的,因为矩阵参数一旦变得更受欢迎就会有完全相同的问题,因此它们在这方面与查询参数没有什么不同.
"具有查询参数的网址将不会被中介/代理缓存其响应".这不是纯粹的特定于实现的事情吗?我没有在HTTP标准中看到任何要求此行为的内容......
@Gill查询参数在定义可选条件时很有用矩阵参数是路径变量的补充信息.请参阅此URL查询:http:// localhost/services/api/movies?limit = 10&actor = true&name = true matrix:http:// localhost/services/api/movies/actor; name?limit = 10使用时更有意义作为查询的矩阵.此URL证明了bdargan的第5点.
@Gili他从未说过这种行为是由HTTP强制规定的.从他的文章:"中介(代理)不会在网址中缓存任何带有查询参数的网址.这是因为在网络的早期,他们不信任动态生成的网页中的缓存控制信息." 规范和现实世界的做法有时(或在大多数情况下)不同.