Network.HTTP.Affjax
- Package
- purescript-affjax
- Repository
- slamdata/purescript-affjax
#Affjax Source
type Affjax a = Aff (AffjaxResponse a)
The result type for Affjax requests.
#AffjaxRequest Source
type AffjaxRequest = { content :: Maybe Request, headers :: Array RequestHeader, method :: Either Method CustomMethod, password :: Maybe String, url :: URL, username :: Maybe String, withCredentials :: Boolean }
A record that contains all the information to perform an HTTP request.
Instead of constructing the record from scratch it is often easier to build
one based on defaultRequest
.
#defaultRequest Source
defaultRequest :: AffjaxRequest
A record of the type AffjaxRequest
that has all fields set to default
values. This record can be used as the as the foundation for constructing
custom requests.
As an example
defaultRequest { url = "/api/user", method = Left POST }
Represents a POST request to the URL /api/user
.
#AffjaxResponse Source
type AffjaxResponse a = { headers :: Array ResponseHeader, response :: a, status :: StatusCode, statusText :: String }
The type of records that will be received as an Affjax response.
#affjax Source
affjax :: forall a. Response a -> AffjaxRequest -> Affjax a
Makes an HTTP request. The first argument specifies how the HTTP response body should be interpreted.
The example below performs a GET
request to the URL /resource
/ and
interprets the response body as JSON.
affjax json (defaultRequest { url = "/resource", method = Left GET })
For common cases helper functions can often be used instead of affjax
.
For instance, the above example is equivalent to the following.
get json "/resource"
#RetryDelayCurve Source
type RetryDelayCurve = Int -> Milliseconds
A sequence of retry delays, in milliseconds.
#RetryPolicy Source
type RetryPolicy = { delayCurve :: RetryDelayCurve, shouldRetryWithStatusCode :: StatusCode -> Boolean, timeout :: Maybe Milliseconds }
Expresses a policy for retrying Affjax requests with backoff.
#defaultRetryPolicy Source
defaultRetryPolicy :: RetryPolicy
A sensible default for retries: no timeout, maximum delay of 30s, initial delay of 0.1s, exponential backoff, and no status code triggers a retry.
#retry Source
retry :: forall a. RetryPolicy -> (AffjaxRequest -> Affjax a) -> AffjaxRequest -> Affjax a
Retry a request using a RetryPolicy
. After the timeout, the last received response is returned; if it was not possible to communicate with the server due to an error, then this is bubbled up.