Server.Response

Responses

type alias Response data error =
PageServerResponse data error

There are two top-level response types:

  1. Server Responses
  2. Render Responses

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).

Server Responses

json : Value -> Response data error
plainText : String -> Response data error
temporaryRedirect : String -> Response data error
permanentRedirect : String -> Response data error

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.

Custom Responses

emptyBody : Response data error
body : String -> Response data error
bytesBody : Bytes -> Response data error
base64Body : String -> Response data error

Render Responses

render : data -> Response data error

Rendering Error Pages

errorPage : errorPage -> Response data errorPage
(errorPage -> mappedErrorPage)
-> Response data errorPage
-> Response data mappedErrorPage
map :
(data -> mappedData)
-> Response data error
-> Response mappedData error

Amending Responses

withHeader : String -> String -> Response data error -> Response data error
List ( String, String )
-> Response data error
-> Response data error
withStatusCode : Int -> Response data Never -> Response data Never
withSetCookieHeader : SetCookie -> Response data error -> Response data error

Internals

toJson : Response Never Never -> Value