@@ -7,14 +7,35 @@ This library lets you automatically derive Haskell functions that let you query
77## Example
88
99``` haskell
10+{-# LANGUAGE DataKinds #-}
11+{-# LANGUAGE TypeOperators #-}
12+
13+import Data.Proxy
14+import Data.Text
15+import Network.HTTP.Client (newManager, defaultManagerSettings)
16+import Servant.API
17+import Servant.Client
18+
19+
20+type Book = Text
21+
1022type MyApi = "books" :> Get '[JSON] [Book] -- GET /books
11− :<|> "books" :> ReqBody Book :> Post '[JSON] Book -- POST /books
23+ :<|> "books" :> ReqBody '[JSON] Book :> Post '[JSON] Book -- POST /books
1224
1325myApi :: Proxy MyApi
1426myApi = Proxy
1527
16−getAllBooks :: Manager -> BaseUrl -> ExceptT String IO [Book]
17−postNewBook :: Book -> Manager -> BaseUrl -> ExceptT String IO Book
1828-- 'client' allows you to produce operations to query an API from a client.
29+postNewBook :: Book -> ClientM Book
30+getAllBooks :: ClientM [Book]
1931(getAllBooks :<|> postNewBook) = client myApi
32+
33+
34+main :: IO ()
35+main = 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
2041```