Understanding the "post/redirect/get" pattern

forms, html, php, post-redirect-get, session

Solution

As you may know from your research, `POST`-redirect-`GET` looks like this:

- The client gets a page with a form.

- The form `POST`s to the server.

- The server performs the action, and then redirects to another page.

- The client follows the redirect.

For example, say we have this structure of the website:

- `/posts` (shows a list of posts and a link to "add post")

- `/<id>` (view a particular post)

- `/create` (if requested with the `GET` method, returns a form posting to itself; if it's a `POST` request, creates the post and redirects to the `/<id>` endpoint)

`/posts` itself isn't really relevant to this particular pattern, so I'll leave it out.

`/posts/<id>` might be implemented like this:

- Find the post with that ID in the database.

- Render a template with the content of that post.

`/posts/create` might be implemented like this:

- If the request is a `GET` request:

- Show an empty form with the target set to itself and the method set to `POST`.

- If the request is a `POST` request:

- Validate the fields.

- If there are invalid fields, show the form again with errors indicated.

- Otherwise, if all fields are valid:

- Add the post to the database.

- Redirect to `/posts/<id>` (where `<id>` is returned from the call to the database)

Problem

I am having a very hard time understanding the exact process of "post/redirect/get". I have combed through this site and the web for several hours and cannot find anything other than "here's the concept". How to understand the post/redirect/get pattern?

Original source

Related problems