Friendly abstraction over remote API communication in JSON.
POST request as a command.
type Msg
= HandlePostCat (WebData Cat)
postCat : Cat -> Cmd Msg
postCat cat =
post "/api/cats/" HandlePostCat catDecoder (encodeCat cat)PUT request as a command.
type Msg
= HandlePutCat (WebData Cat)
putCat : Cat -> Cmd Msg
putCat cat =
put "/api/cats/" HandlePutCat catDecoder (encodeCat cat)PATCH request as a command.
type Msg
= HandlePatchCat (WebData Cat)
patchCat : Cat -> Cmd Msg
patchCat cat =
patch "/api/cats/" HandlePatchCat catDecoder (encodeCat cat)DELETE request as a command.
type Msg
= HandleDeleteCat (WebData DeleteResponse)
deleteCat : Cat -> Cmd Msg
deleteCat cat =
delete "/api/cats/" HandleDeleteCat deleteDecoder (encodeCat cat)GET request as a task.
Has a no-cache header to ensure data integrity.
getCatTask : Task Never (WebData Cat)
getCatTask =
getTask "/api/cats/1" catDecoderPOST request as a task.
postCatTask : Cat -> Task Never (WebData Cat)
postCatTask cat =
postTask "/api/cats/" catDecoder (encodeCat cat)PUT request as a task.
putCatTask : Cat -> Task Never (WebData Cat)
putCatTask cat =
putTask "/api/cats/" catDecoder (encodeCat cat)PATCH request as a task.
patchCatTask : Cat -> Task Never (WebData Cat)
patchCatTask cat =
patchTask "/api/cats/" catDecoder (encodeCat cat)DELETE request as a task.
deleteCatTask : Cat -> Task Never (WebData Cat)
deleteCatTask cat =
deleteTask "/api/cats/" catDecoder (encodeCat cat)If you need more control over the request, you can use the
<verb>WithConfig function with a record like this.
specialConfig : Config
specialConfig =
{ headers = [ specialHeader, anotherHeader ]
, withCredentials = True
, timeout = Nothing
}
postCat : Cat -> Cmd Msg
postCat cat =
postWithConfig specialConfig "/api/cats/" HandlePostCat catDecoder (encodeCat cat)The default configuration for all requests besides GET:
The default configuration for GET requests:
no-cache headerGET request as a command, with cache. NB. allowing cache in API GET calls can lead
to strange conditions.
getWithConfig noCacheConfig "http://example.com/users.json" userDecoder
== get "http://example.com/users.json" userDecoderFor a request without any headers, you can use:
getWithConfig defaultConfig url decoderPOST request as a command, with additional Config.
postWithConfig defaultConfig == postTaskPUT request as a command, with additional Config.
putWithConfig defaultConfig == putTaskPATCH request as a command, with additional Config.
patchWithConfig defaultConfig == patchTaskDELETE request as a command, with additional Config.
deleteWithConfig defaultConfig == deleteTaskGET request as a task, with additional Config. NB. allowing cache in API GET calls can lead
to strange conditions.
getTaskWithConfig noCacheConfig "http://example.com/users.json" userDecoder
== getTask "http://example.com/users.json" userDecoderFor a request without any headers, you can use:
getTaskWithConfig defaultConfig url decoderPOST request as a task, with additional Config.
postTaskWithConfig defaultConfig == postTaskPUT request as a task, with additional Config.
putTaskWithConfig defaultConfig == putTaskPATCH request as a task, with additional Config.
patchTaskWithConfig defaultConfig == patchTaskDELETE request as a task, with additional Config.
deleteTaskWithConfig defaultConfig == deleteTaskThis is the old url function from evancz/elm-http.
Create a properly encoded URL with a query string. The first argument is the portion of the URL before the query string, which is assumed to be properly encoded already. The second argument is a list of all the key/value pairs needed for the query string. Both the keys and values will be appropriately encoded, so they can contain spaces, ampersands, etc. url "http://example.com/users" [ ("name", "john doe"), ("age", "30") ] -- http://example.com/users?name=john+doe&age=30
GETrequest as a command. Has ano-cacheheader to ensure data integrity.