Мне очень трудно понять точный процесс "post/redirect/get".
Я прочесывал этот сайт и сеть в течение нескольких часов и не могу найти ничего, кроме "здесь понятия".
Как понять шаблон сообщения/перенаправления/получения?
Мне очень трудно понять точный процесс "post/redirect/get".
Я прочесывал этот сайт и сеть в течение нескольких часов и не могу найти ничего, кроме "здесь понятия".
Как понять шаблон сообщения/перенаправления/получения?
Как вам известно из , POST
-redirect- GET
выглядит следующим образом:
POST
для сервера.Например, скажем, что у нас есть эта структура веб-сайта:
/posts
(показывает список сообщений и ссылку на "добавить сообщение" )
/<id>
(просмотреть конкретную запись)/create
(если запрашивается с помощью метода GET
, возвращает отправление формы самому себе, если это запрос POST
, создает сообщение и перенаправляет конечную точку /<id>
) /posts
сам по себе не имеет отношения к этому конкретному шаблону, поэтому я его не буду.
/posts/<id>
может быть реализована следующим образом:
/posts/create
может быть реализован следующим образом:
GET
:
POST
.POST
:
/posts/<id>
(где <id>
возвращается из вызова в базу данных)Wikipedia объясняет это так хорошо!
Я попробую объяснить это. Возможно, другая перспектива делает трюк для вас.
В PRG браузер заканчивает выполнение двух запросов. Первый запрос - это запрос POST и обычно используется для изменения данных. Сервер отвечает заголовком "Местоположение" в ответе и без HTML в теле. Это заставляет браузер перенаправляться на новый URL-адрес. Затем браузер делает запрос GET на новый URL-адрес, который отвечает содержимым HTML, которое отображает браузер.
Я попытаюсь объяснить, почему PRG следует использовать. Метод GET никогда не должен изменять данные. Когда пользователь нажимает ссылку, браузер или прокси-сервер могут возвращать кешированный ответ и не отправлять запрос на сервер; это означает, что данные не были изменены, если вы хотите, чтобы они были изменены. Кроме того, запрос POST не должен использоваться для возврата данных, поскольку, если пользователь хочет просто получить новую копию данных, они вынуждены повторно выполнить запрос, который заставит сервер снова изменить данные. Вот почему браузер предоставит вам этот неопределенный диалог с вопросом, хотите ли вы повторно отправить запрос и, возможно, изменить данные во второй раз или отправить электронное письмо во второй раз.
PRG - это комбинация POST и GET, которая использует каждый для того, для чего они предназначены для использования.