This library lets you automatically derive Haskell functions that let you query each endpoint of a servant webservice.
Example
type MyApi = "books" :> Get '[JSON] [Book] -- GET /books
:<|> "books" :> ReqBody Book :> Post '[JSON] Book -- POST /books
myApi :: Proxy MyApi
myApi = Proxy
getAllBooks :: ExceptT String IO [Book]
postNewBook :: Book -> ExceptT String IO Book
-- 'client' allows you to produce operations to query an API from a client.
(getAllBooks :<|> postNewBook) = client myApi host
where host = BaseUrl Http "localhost" 8080
Changes
0.7.1
Support GHC 8.0
ServantError has an Eq instance now.
0.6
client no longer takes BaseUrl and Manager arguments. Instead, each function returned by client requires these two arguments.
0.5
Use the text package instead of String.
Support for the HttpVersion, IsSecure, RemoteHost and Vault combinators
Added support for path on BaseUrl.
client now takes an explicit Manager argument.
Use http-api-data instead of Servant.Common.Text
Client functions now consider any 2xx successful.
Remove matrix params.
Added support for Basic authentication
Add generalized authentication support via the AuthClientData type family and
AuthenticateReq data type
0.4.1
The HasClient instance for Delete cts () now does not care at all about content types provided.
0.4
Delete now is like Get, Post, Put, and Patch and returns a response body
Support content-type aware combinators and Accept/Content-type headers
Added a lot of tests
Support multiple concurrent threads
Use ServantError to report Errors instead of String
Make the clients for Raw endpoints return the whole Response value (to be able to access response headers for example)
Support for PATCH
Make () instances expect No Content status code, and not try to decode body.