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


90

查询参数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

Answers:


110

矩阵参数和查询参数之间的差异远不只是约定。

主要区别在于:

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


    4
    “带有查询参数的网址不会被中介/代理缓存其响应”。这不是纯粹针对实现的事情吗?我没有在HTTP标准中看到任何需要这种行为的信息……
    Gili

    1
    总结:如果您说的是真的,为什么不将所有查询参数都迁移到矩阵参数?
    Gili

    2
    @Gili他从未说过该行为是由HTTP强制执行的。他的文章中写道:“中介(代理)不会在URL中缓存任何带有查询参数的URL。这是因为在Web的早期,他们不信任动态生成的页面中的Cache控制信息。” 规格和实际操作有时(或在大多数情况下)有所不同。
    Hendy Irawan

    6
    这个答案是错误的3/5。相对URI的区别以及在路径中间嵌入参数的能力是正确的。所有其他要点都是错误的,因为矩阵参数一旦变得越来越流行,就会出现完全相同的问题,因此在这方面它们与查询参数没有区别。
    吉利2012年

    3
    @Gill查询参数在定义可选标准时很有用,矩阵参数是路径变量的补充信息。请参阅以下URL查询:localhost / services / api /…矩阵:localhost / services / api / movies / actor; name?limit = 10 当用作查询矩阵时更有意义。该网址证明了bdargan的第5点。
    2013年
    By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
    Licensed under cc by-sa 3.0 with attribution required.