fabiommendes/elm-request/1.0.0

NOTE: the latest version is 4.0.0

Request

type Request url value

Represent an HTTP request

= GET
| POST
| PUT
| DELETE
| PATCH
| OPTIONS
| HEAD

An enum that represent all valid HTTP methods.

Config objects

type alias Config url error =
{ toUrl : url -> String
, fromHttpError : Error -> error
, timeout : Maybe Float
, risky : Bool
, headers : List ( String, String )
}

Config objects allow Requests that uses different URL representations than Strings and different error types than Http.Error.

simple : Config String Error

The default config

Create requests

-> { url : url
, expect : Expect a
}
-> Request url a

Create a simple http request

get :
{ url : url
, expect : Expect a
}
-> Request url a

Create a GET request.

{ url : url
, expect : Expect a
}
-> Request url a

Create a POST request.

put :
{ url : url
, expect : Expect a
}
-> Request url a

Create a PUT request.

{ url : url
, expect : Expect a
}
-> Request url a

Create a DELETE request.

{ url : url
, expect : Expect a
}
-> Request url a

Create a PATCH request.

{ url : url
, expect : Expect a
}
-> Request url a

Create an OPTIONS request.

Declare task content

type Expect value

Represents the expected response in an Http request

expectJson : Decoder a -> Request url b -> Request url a

Declares a request that expects a JSON response handled with the given decoder.

expectBytes : Decoder a -> Request url b -> Request url a

Declares a request that expects a binary response handled with the given decoder.

expectString : Request url b -> Request url String

Declares a request that expects a simple string response.

expectWhatever : Request url b -> Request url ()

Ignores the content of the received response.

Set request parameters

withHeaders : List ( String, String ) -> Request url a -> Request url a

Adds a list of headers to the request.

Request.get
    { url = "https://example.com"
    , expect = Request.expectJson Json.Decode.string
    }
    |> Request.withHeaders [ ( "Authorization", "Bearer " ++ token ) ]
excludeDefaultHeaders : List String -> Request url a -> Request url a

Ignore specific default headers declared in the config.

Request.get
    { url = "https://example.com"
    , expect = Request.expectJson Json.Decode.string
    }
    |> Request.excludeDefaultHeaders [ "Authorization", "Cookie" ]

Ignore all default headers declared in the config.

Request.get
    { url = "https://example.com"
    , expect = Request.expectJson Json.Decode.string
    }
    |> Request.ignoreDefaultHeaders
risky : Bool -> Request url value -> Request url value

Declares the request as risky (or not) according to the boolean argument.

Request.get
    { url = "https://example.com"
    , expect = Request.expectJson Json.Decode.string
    }
    |> Request.risky True

Convert to commands and tasks

cmd :
Config url error
-> (Result error value -> msg)
-> Request url value
-> Cmd msg

Convert a request to a command.

This function requires a config object. If you don not need one, use the simple config exported by this package.

Request.get
    { url = "https://example.com"
    , expect = Request.expectJson Json.Decode.string
    }
    |> Request.cmd Request.simple ResponseReceived
task : Config url error -> Request url value -> Task error value

Convert a request to a task.

This function requires a config object. If you don not need one, use the simple config exported by this package.

Request.get
    { url = "https://example.com"
    , expect = Request.expectJson Json.Decode.string
    }
    |> Request.task Request.simple