ryannhg / elm-spa / ElmSpa.Request

( These docs are for CLI contributors )

If you are using elm-spa, check out the official guide instead!


Every page gets access to a request, which has information about the current URL, route parameters, query parameters etc.

page : Shared.Model -> Request Params -> Page Model Msg
page _ request =
    Page.element
        { init = init
        , update = update
        , view = view request
        }

You can choose to pass this request into init,update, or any other function that might need access to URL-related information.

Requests


type alias Request route params =
{ url : Url
, key : Browser.Navigation.Key
, route : route
, params : params
, query : Dict String String 
}

Here is an example request for the route /people/:name

-- /people/ryan
req.route == Route.People__Detail_ { name = "ryan" }

req.params == { name = "ryan" }

req.params.name == "ryan"

req.query == Dict.empty

And another example with a some query parameters:

-- /people/scott?allowed=false
req.route == Route.People__Detail_ { name = "scott" }

req.params == { name = "scott" }

req.params.name == "scott"

Dict.get "allowed" req.query == Just "false"

create : route -> params -> Url -> Browser.Navigation.Key -> Request route params

A convenience function for creating requests, used by elm-spa internally.

request : Request Route { name : String }
request =
    Request.create (Route.fromUrl url)
        { name = "ryan" }
        url
        key