Понимание «post / redirect / get»

Мне очень трудно понять точный процесс «post / redirect / get». Я прочесывал этот сайт и сеть в течение нескольких часов и не могу найти ничего, кроме «вот эта концепция». Это так просто, что для этого не требуется пошаговое руководство? Кто-нибудь знает хороший веб-сайт или книгу, которую я мог бы использовать, чтобы найти пример или учебник?

    Как вы можете узнать из своего исследования , POST -redirect- GET выглядит так:

    • Клиент получает страницу с формой.
    • Форма POST s на сервер.
    • Сервер выполняет действие, а затем перенаправляется на другую страницу.
    • Клиент выполняет перенаправление.

    Например, скажем, что у нас есть эта структура веб-сайта:

    • /posts (Показать список сообщений и ссылку на "Добавить сообщение")
      • /<id> (просмотреть конкретную запись)
      • /create (если запрашивается с помощью метода GET , возвращает сообщение о себе для себя, если это запрос POST , создает сообщение и перенаправляет конечную точку /<id> ),

    /posts сама по себе не имеет отношения к этому конкретному шаблону, поэтому я оставлю это.

    /posts/<id> может быть реализована следующим образом:

    • Найдите сообщение с этим идентификатором в базе данных.
    • Извлеките шаблон с содержимым этого сообщения.

    /posts/create может быть реализовано следующим образом:

    • Если запрос является запросом GET :
      • Показывать пустую форму с целевым набором для себя и методом, установленным в POST .
    • Если запрос является POST запросом:
      • Подтвердите поля.
      • Если есть недопустимые поля, снова покажите форму с указанными ошибками.
      • В противном случае, если все поля действительны:
        • Добавить запись в базу данных.
        • Перенаправление на /posts/<id> (где <id> возвращается из вызова в базу данных)

    Википедия так объясняет это!

    Проблема

    Проблема

    Решение

    Решение

    Я попробую объяснить это. Возможно, другая перспектива делает трюк для вас.

    С PRG браузер заканчивает выполнение двух запросов. Первый запрос – это запрос POST и обычно используется для изменения данных. Сервер отвечает заголовком «Местоположение» в ответе и без HTML в теле. Это заставляет браузер перенаправляться на новый URL-адрес. Затем браузер делает запрос GET на новый URL-адрес, который отвечает содержимым HTML, которое отображает браузер.

    Я попытаюсь объяснить, почему PRG следует использовать. Метод GET никогда не должен изменять данные. Когда пользователь нажимает ссылку, браузер или прокси-сервер могут возвращать кешированный ответ и не отправлять запрос на сервер; это означает, что данные не были изменены, если вы хотите, чтобы они были изменены. Кроме того, запрос POST не должен использоваться для возврата данных, поскольку, если пользователь хочет просто получить новую копию данных, они вынуждены повторно выполнить запрос, который заставит сервер снова изменить данные. Вот почему браузер предоставит вам этот неопределенный диалог с вопросом, хотите ли вы повторно отправить запрос и, возможно, изменить данные во второй раз или отправить электронное письмо во второй раз.

    PRG – это комбинация POST и GET, которая использует каждый для того, для чего они предназначены.