ryan-haskell/elm-spa/1.0.0

Formerly ryannhg/elm-spa. Search finds this package by either name.

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 : 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 -> 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