Понимание "опубликовать/перенаправить/получить" [закрыто]


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

Author: whatdafrak, 2012-05-31

3 answers

Как вы, возможно, знаете из вашего исследования, POST- перенаправление-GET выглядит так:

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

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

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

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

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

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

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

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

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

Проблема

The Problem

Решение

The Solution

 33
Author: MasterMastic, 2015-03-01 00:15:13

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

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

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

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

 3
Author: Sarel Botha, 2012-05-31 04:07:25