request

[ bsd3, library, web ] [ Propose Tags ]

"HTTP client for haskell, inpired by requests and http-dispatch."


[Skip to Readme]

Modules

[Index] [Quick Jump]

Downloads

Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees

Candidates

  • No Candidates
Versions [RSS] 0.1.0.0, 0.1.1.0, 0.1.2.0, 0.1.3.0, 0.2.0.0, 0.2.1.0, 0.2.2.0
Dependencies base (>=4.7 && <5), bytestring (>=0.10.12 && <0.11), case-insensitive (>=1.2.1 && <1.3), http-client (>=0.6.4 && <0.7), http-client-tls (>=0.3.5 && <0.4), http-types (>=0.12.3 && <0.13) [details]
License BSD-3-Clause
Copyright 2020 An Long
Author An Long
Maintainer aisk1988@gmail.com
Category Web
Home page https://github.com/aisk/request#readme
Source repo head: git clone https://github.com/aisk/request
Uploaded by asaka at 2021-04-21T16:23:31Z
Distributions
Downloads 949 total (21 in the last 30 days)
Rating 2.25 (votes: 2) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Docs available [build log]
Last success reported on 2021-04-21 [all 1 reports]

Readme for request-0.1.1.0

[back to package description]

request

HTTP client for haskell, inpired by requests and http-dispatch.

Usage

You can try this in haskell REPL once you have request installed:

import Network.HTTP.Request

resp <- get "https://api.leancloud.cn/1.1/date"
print $ requestStatus resp

Core API

Request's API has three core concepts: Request record type, Response record type, send function.

Request

Request is all about the information you will send to the target URL.

data Request = Request
  { requestMethod  :: Method
  , requestUrl     :: String
  , requestHeaders :: Headers
  , requestBody    :: Maybe Data.ByteString.ByteString
  } deriving (Show)

send

Once you have constructed your own Request record, you can call the send function to send it to the server. The send function's type is:

send :: Request -> IO Response

Response

Response is what you got from the server URL.

data Response = Response
  { responseStatus  :: Int
  , responseHeaders :: Headers
  , responseBody    :: Data.ByteString.ByteString
  } deriving (Show)

Example

:set -XOverloadedStrings

import Network.HTTP.Request

-- Construct a Request record.
let req = Request GET "https://api.leancloud.cn/1.1/date" [] Nothing
-- Send it.
res <- send req
-- access the fields on Response.
print $ requestStatus resp

Shortcuts

As you expected, there are some shortcuts for the most used scenarios.

get :: String -> IO Response
get url =
  send $ Request GET url [] Nothing

delete :: String -> IO Response
delete url =
  send $ Request DELETE url [] Nothing

post :: (String, Maybe Data.ByteString.ByteString) -> IO Response
post (url, body) =
  send $ Request POST url [] body

put :: (String, Maybe Data.ByteString.ByteString) -> IO Response
put (url, body) =
  send $ Request PUT url [] body

These shortcuts' definitions are simple and direct. You are encouraged to add your own if the built-in does not match your use cases, like add custom headers in every request.

About the Project

Request is © 2020-2021 by aisk.

License

Request is distributed by a BSD license.