There are two top-level response types:
A Server Response is a way to directly send a low-level server response, with no additional magic. You can set a String body,
a list of headers, the status code, etc. The Server Response helpers like json
and temporaryRedirect
are just helpers for
building up those low-level Server Responses.
Render Responses are a little more special in the way they are connected to your elm-pages app. They allow you to render
the current Route Module. To do that, you'll need to pass along the data
for your Route Module.
You can use withHeader
and withStatusCode
to customize either type of Response (Server Responses or Render Responses).
Build a 308 permanent redirect response.
Permanent redirects tell the browser that a resource has permanently moved. If you redirect because a user is not logged in, then you do not want to use a permanent redirect because the page they are looking for hasn't changed, you are just temporarily pointing them to a new page since they need to authenticate.
Permanent redirects are aggressively cached so be careful not to use them when you mean to use temporary redirects instead.
If you need to specifically rely on a 301 permanent redirect (see https://stackoverflow.com/a/42138726 on the difference between 301 and 308),
use customResponse
instead.