何时使用查询参数与矩阵参数?

Gil*_*ili 90 uri query-parameters

查询参数:http://example.com/apples?order=random&color=blue

矩阵参数:http://example.com/apples;order=random;color=blue

  1. 应该何时使用查询参数与矩阵参数?
  2. 为什么矩阵参数可以在URL的中间使用,但查询参数不能?例如:http://example.com/apples;order=random;color=blue/2006/archive
  3. 如果矩阵参数是查询参数的超集,为什么不一直使用它们呢?

您可以在此处阅读有关矩阵参数的更多信息:http://www.w3.org/DesignIssues/MatrixURIs.html

小智 110

Matrix参数和查询参数之间的差异远不止于常规.

主要区别是:

  • 带有查询参数的网址不会被中介/代理缓存(目前)
  • 矩阵参数可以出现在路径的任何位置
  • 计算相对uri是不同的
  • 查询参数通常被滥用来添加新动词而不是在资源上使用现有方法
  • 矩阵参数不是资源,它们是帮助引用难以在层次结构内表示的信息空间中的资源的方面
  • 我已经在查询与矩阵参数中更详细地编写了更多参考文献

    • 这个答案是3/5错了.相对URI的差异以及在路径中间嵌入参数的能力都是正确的.所有其他点都是错误的,因为矩阵参数一旦变得更受欢迎就会有完全相同的问题,因此它们在这方面与查询参数没有什么不同. (6认同)
    • "具有查询参数的网址将不会被中介/代理缓存其响应".这不是纯粹的特定于实现的事情吗?我没有在HTTP标准中看到任何要求此行为的内容...... (4认同)
    • @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点. (3认同)
    • @Gili他从未说过这种行为是由HTTP强制规定的.从他的文章:"中介(代理)不会在网址中缓存任何带有查询参数的网址.这是因为在网络的早期,他们不信任动态生成的网页中的缓存控制信息." 规范和现实世界的做法有时(或在大多数情况下)不同. (2认同)