on try-fix-uverb help sign in
41 lines 1.1 kB history raw
1# servant-client
3![servant](https://raw.githubusercontent.com/haskell-servant/servant/master/servant.png)
5This library lets you automatically derive Haskell functions that let you query each endpoint of a *servant* webservice.
7## Example
9``` haskell
10{-# LANGUAGE DataKinds #-}
11{-# LANGUAGE TypeOperators #-}
13import Data.Proxy
14import Data.Text
15import Network.HTTP.Client (newManager, defaultManagerSettings)
16import Servant.API
17import Servant.Client
20type Book = Text
22type MyApi = "books" :> Get '[JSON] [Book] -- GET /books
23 :<|> "books" :> ReqBody '[JSON] Book :> Post '[JSON] Book -- POST /books
25myApi :: Proxy MyApi
26myApi = Proxy
28-- 'client' allows you to produce operations to query an API from a client.
29postNewBook :: Book -> ClientM Book
30getAllBooks :: ClientM [Book]
31(getAllBooks :<|> postNewBook) = client myApi
34main :: IO ()
35main = do
36 manager' <- newManager defaultManagerSettings
37 res <- runClientM getAllBooks (mkClientEnv manager' (BaseUrl Http "localhost" 8081 ""))
38 case res of
39 Left err -> putStrLn $ "Error: " ++ show err
40 Right books -> print books
41```