automatical derivation of querying functions for servant webservices

Version on this page:0.2.2
LTS Haskell 11.6:
Stackage Nightly 2018-04-25:
Latest on Hackage:

See all snapshots servant-client appears in

BSD3 licensed by Servant Contributors
Maintained by

Module documentation for 0.2.2

There are no documented modules for this package.



This library lets you automatically derive Haskell functions that let you query each endpoint of a servant webservice.


type MyApi = "books" :> Get '[JSON] [Book] -- GET /books
        :<|> "books" :> ReqBody Book :> Post '[JSON] Book -- POST /books

myApi :: Proxy MyApi
myApi = Proxy

getAllBooks :: Manager -> BaseUrl -> ExceptT String IO [Book]
postNewBook :: Book -> Manager -> BaseUrl -> ExceptT String IO Book
-- 'client' allows you to produce operations to query an API from a client.
(getAllBooks :<|> postNewBook) = client myApi


The latest version of this document is on GitHub. Changelog for servant package contains significant entries for all core packages.

  • Support base-compat-0.10


  • Streaming endpoint support. (#836)
  • servant Add Servant.API.Modifiers (#873)
  • servant-client Support http-client’s CookieJar (#897 #883)

  • Send Accept header. (#858)


  • Factored out into servant-client-core all the functionality that was independent of the http-client backend.


Other changes

  • Path components are escaped (#696)
  • Req reqPath field changed from String to BS.Builder (#696)
  • Include Req in failure errors (#740)


Breaking changes

There shouldn't be breaking changes. Released as a part of servant suite.

Other changes

  • Add MonadBase and MonadBaseControl instances for ClientM (#663)

  • client asks for any content-type in Accept contentTypes non-empty list (#615)

  • Add ClientLike class that matches client functions generated using client with client data structure. (#640)

  • Allow direct use of 'RequestBody' (#661)

  • Add MonadThrow and MonadCatch instances for ClientM


  • BACKWARDS INCOMPATIBLE: client now returns a ClientM which is a Reader for BasicEnv. BasicEnv comprises the HttpManager and BaseUrl that have had to be passed to each method returned by client.


  • Support GHC 8.0
  • ServantError has an Eq instance now.


  • client no longer takes BaseUrl and Manager arguments. Instead, each function returned by client requires these two arguments.


  • 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


  • The HasClient instance for Delete cts () now does not care at all about content types provided.


  • 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.
  • Add support for response headers


  • Add TLS support
  • Add matrix parameter support
comments powered byDisqus