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, expecting a String response.
In many APIs, the response for successful delete requests has an empty
HTTP body, so decoding it as JSON will always fail. This is why delete and
deleteTask don't have a decoder argument. If you really want to decode the
response, use Json.Decode.decodeString.
type Msg
= HandleDeleteCat (WebData String)
deleteCat : Cat -> Cmd Msg
deleteCat cat =
delete "/api/cats/" HandleDeleteCat (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, expecting a String response.
In many APIs, the response for successful delete requests has an empty
HTTP body, so decoding it as JSON will always fail. This is why delete and
deleteTask don't have a decoder argument. If you really want to decode the
response, use Json.Decode.decodeString.
deleteCatTask : Cat -> Task Never (WebData String)
deleteCatTask cat =
deleteTask "/api/cats/" (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.