Когда использовать параметры запроса по сравнению с параметрами матрицы?

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

Гили
источник

Ответы:

110

Различия между параметрами матрицы и параметрами запроса гораздо больше, чем просто соглашение.

Основные отличия:

  • URL-адреса с параметрами запроса не будут кэшироваться посредниками / прокси (в настоящее время)
  • параметры матрицы могут появляться в любом месте пути
  • расчет относительного URI отличается
  • параметры запроса обычно используются для добавления новых глаголов вместо использования существующих методов для ресурсов
  • параметры матрицы не являются ресурсами, это аспекты, которые помогают ссылаться на ресурс в информационном пространстве, которое трудно представить в иерархии
  • Я описал это более подробно и с дополнительными ссылками в Query vs. Matrix Parameters.

    Bdargan
    источник
    4
    "URL-адреса с параметрами запроса не будут кэшироваться посредниками / прокси". Разве это не чисто специфическая вещь для реализации? Я не вижу в стандарте HTTP ничего, что требовало бы такого поведения ...
    Гили,
    1
    Подводя итог: если то, что вы говорите, правда, почему бы вам не перенести все параметры запроса в параметры матрицы?
    Gili
    2
    @Gili, он никогда не говорил, что поведение требует HTTP. из его статьи: «Посредники (прокси) не будут кэшировать URL-адреса с параметром запроса в URL-адресе. Это потому, что в первые дни Интернета они не доверяли информации управления кешем с динамически генерируемых страниц». Технические характеристики и реальная практика иногда (или в большинстве случаев) отличаются.
    Хенди Ираван,
    6
    Этот ответ на 3/5 неверен. Разница в отношении относительных URI и возможность вставлять параметры в середину пути верны. Все остальные пункты неверны, поскольку параметры матрицы будут иметь ту же проблему, когда они станут более популярными, поэтому они не отличаются от параметров запроса в этом отношении.
    Gili
    3
    Параметры запроса @Gill полезны при определении необязательных параметров матрицы критериев, которые являются дополнительной информацией к переменной пути. См. Этот URL-запрос: localhost / services / api /… matrix: localhost / services / api / movies / субъект; name? Limit = 10 Имеет больше смысла при использовании в качестве матрицы запроса. Этот URL-адрес подтверждает пункт 5 от bdargan.
    skipy 01