HTTP ДОБИРАЕТСЯ и рекомендации параметров POST

Это плохая практика для издания следующего запроса POST:

/test?a=1&b=2
POST data: c=3&d=4

Заметьте, что 2 параметра являются частью URL, и 2 параметра являются частью содержания POST.

На другой ноте, следующее правило, все еще рекомендуемое:

  • ПОЛУЧИТЕ запрос: получите содержание с сервера, но ничего не изменяйте на сервере.
  • Запрос POST: отправьте содержание на сервер, который может изменить данные по серверу

Я спрашиваю, потому что я вижу немного все онлайн.

Laurent Luce

6
задан Laurent Luce 3 January 2010 в 00:36
поделиться

4 ответа

Да, ваши предположения верны. Вы должны быть последовательны в том, как передавать параметры или требовать их передачи, но на самом деле это не повредит.

GET-операции должны быть безопасными операциями, которые не производят никаких побочных эффектов (кроме кэширования и т.д.), поэтому они легко кэшируются прокси-серверами и тому подобное. С другой стороны, операции POST могут вызвать побочные эффекты.

Я бы порекомендовал прочитать запись Википедии по протоколу HTTP:

GET

запрашивает представление указанного ресурса. Обратите внимание, что GET не следует использовать для операций, вызывающих побочные эффекты, например, для совершения действий в веб-приложениях. Одной из причин этого является то, что GET может использоваться произвольно роботами или гусеницами, которым не нужно учитывать побочные эффекты, которые должен вызывать запрос. См. ниже безопасные методы.

POST

Отправляет данные для обработки (например, из HTML-формы) на идентифицированный ресурс. Данные включаются в тело запроса. Это может привести к созданию нового ресурса или обновлению существующих ресурсов, или и к тому, и к другому.

Существуют и другие операции (например, HEAD, PUT, DELETE), и вы должны рассмотреть возможность их использования, если вы разрабатываете API. Они подробно обсуждаются в RESTful API design

.
6
ответ дан 9 December 2019 в 20:44
поделиться

Это правило, скорее всего, все еще рекомендуется.

Это отражено в обновлении поведения современных браузеров. Они с удовольствием обновляются GET-значениями, но при обновлении POST ("Вы уверены, что хотите отправить заново?" и т.д.) появляется предупреждение.

Похоже, что Вы пытались объединить два метода (GET и POST) ... путем POSTing к URL с GET-значениями. Хотя это должно работать нормально, обычно это не делается. Обычно формы используют только один или другой метод

.
3
ответ дан 9 December 2019 в 20:44
поделиться

Да, семантика GET и POST должна соблюдаться.

Учитывая этот факт, то часто есть очень веская причина для того, чтобы поместить некоторые параметры в GET, а некоторые в POST vars - рассмотрим случай, когда у вас есть веб-скрипт, который делает что-то вроде:

UPDATE datatable SET quantity=30 WHERE order=21559

Это может быть представлено как:

 /update?order=21559
 POST data: quantity=30

C.

.
2
ответ дан 9 December 2019 в 20:44
поделиться

В этом нет ничего плохого. Причина, по которой данные для изменения должны быть отправлены в POST, заключается в том, что вы не будете изменять данные снова, если пользователь нажал кнопку Refresh. В этом случае будет отправлена только информация GET.

.
1
ответ дан 9 December 2019 в 20:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: