Поздний ответ, но я добавлю некоторую дополнительную информацию к тому, что было передано, а именно, что есть несколько типов «параметров» для запроса, и вы должны принять это во внимание.
- Локаторы - например, идентификаторы ресурсов, такие как идентификаторы или действие / представление
- Фильтры - например, параметры, которые обеспечивают поиск, сортировку или сужение набора результатов.
- Состояние - например, идентификация сессии, ключи API, whatevs.
- Содержание - например, данные для хранения.
Теперь давайте посмотрим на различные места, где эти параметры могут идти.
- Запросить заголовки и куки
- Строка запроса URL («GET»)
- URL-пути
- Строка запроса тела / multipart (переменные "POST")
Как правило, вы хотите, чтобы State был установлен в заголовках или файлах cookie, в зависимости от того, какой тип информации о состоянии это. Я думаю, что мы все можем согласиться с этим. Используйте пользовательские заголовки http (X-My-Header), если вам нужно.
Аналогично, у контента есть только одно место, которое должно принадлежать, которое находится в теле запроса, либо в виде строк запроса, либо в виде содержимого http multipart и / или JSON. Это соответствует тому, что вы получаете от сервера, когда он отправляет вам контент. Так что не стоит грубить и поступать иначе.
Такие локаторы, как «id = 5» или «action = refresh» или «page = 2», имеют смысл иметь в качестве URL-пути, например, mysite.com/article/5/page=2
когда вы частично знаете, что должна означать каждая часть (основы, такие как article и 5 очевидно означает получение данных типа article с идентификатором 5), а дополнительные параметры указываются как часть URI. Они могут быть в форме page=2
или, page/2
если вы знаете, что после определенной точки в URI «папки» являются парными значениями ключей.
Фильтры всегда идут в строке запроса, потому что, хотя они являются частью поиска правильных данных, они только там, чтобы вернуть подмножество или модификацию того, что локаторы возвращают в одиночку. Поиск в mysite.com/article/?query=Obama
(подмножестве) является фильтром, как и /article/5?order=backwards
(модификация). Подумайте о том, что он делает, а не только как это называется!
Если «view» определяет формат вывода, то это filter ( mysite.com/article/5?view=pdf
), потому что оно возвращает модификацию найденного ресурса, а не поиск того, какой ресурс мы хотим. Если вместо этого он решает, какую конкретную часть статьи мы увидим ( mysite.com/article/5/view=summary
), то это локатор.
Помните, сужение набора ресурсов - это фильтрация. Найти что-то конкретное внутри ресурса - это найти ... дух. Фильтрация подмножеств может возвращать любое количество результатов (даже 0). Поиск всегда найдет этот конкретный экземпляр чего-либо (если он существует). Фильтрация модификаций вернет те же данные, что и локатор, за исключением измененных (если такая модификация разрешена).
Надеюсь, что это помогло людям подарить несколько моментов Эврика, если они потеряли из-за того, куда положить вещи!