| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Prolude.Servant
Contents
Synopsis
- class ToHttpApiData a
- class FromHttpApiData a where
- parseUrlPiece :: Text -> Either Text a
- parseHeader :: ByteString -> Either Text a
- parseQueryParam :: Text -> Either Text a
- type Get = Verb 'GET 200
- type Post = Verb 'POST 200
- type Put = Verb 'PUT 200
- type Delete = Verb 'DELETE 200
- type GetNoContent = NoContentVerb 'GET
- type PostNoContent = NoContentVerb 'POST
- type DeleteNoContent = NoContentVerb 'DELETE
- type PutNoContent = NoContentVerb 'PUT
- data (path :: k) :> a
- type ReqBody = ReqBody' '[Required, Strict]
- data NoContent = NoContent
- data a :<|> b = a :<|> b
- type HttpDescription = Description
- type HttpJson = JSON
- type HttpSummary = Summary
Servant re-exports
class ToHttpApiData a #
Convert value to HTTP API data.
WARNING: Do not derive this using DeriveAnyClass as the generated
instance will loop indefinitely.
Minimal complete definition
Instances
class FromHttpApiData a where #
Parse value from HTTP API data.
WARNING: Do not derive this using DeriveAnyClass as the generated
instance will loop indefinitely.
Minimal complete definition
Methods
parseUrlPiece :: Text -> Either Text a #
Parse URL path piece.
parseHeader :: ByteString -> Either Text a #
Parse HTTP header value.
parseQueryParam :: Text -> Either Text a #
Parse query param value.
Instances
type GetNoContent = NoContentVerb 'GET #
GET with 204 status code.
type PostNoContent = NoContentVerb 'POST #
POST with 204 status code.
type DeleteNoContent = NoContentVerb 'DELETE #
DELETE with 204 status code.
type PutNoContent = NoContentVerb 'PUT #
PUT with 204 status code.
data (path :: k) :> a infixr 4 #
The contained API (second argument) can be found under ("/" ++ path)
(path being the first argument).
Example:
>>>-- GET /hello/world>>>-- returning a JSON encoded World value>>>type MyApi = "hello" :> "world" :> Get '[JSON] World
Instances
| HasLink sub => HasLink (HttpVersion :> sub :: Type) | |
Defined in Servant.Links Associated Types type MkLink (HttpVersion :> sub) a # Methods toLink :: (Link -> a) -> Proxy (HttpVersion :> sub) -> Link -> MkLink (HttpVersion :> sub) a # | |
| HasLink sub => HasLink (StreamBody' mods framing ct a :> sub :: Type) | |
Defined in Servant.Links Associated Types type MkLink (StreamBody' mods framing ct a :> sub) a # Methods toLink :: (Link -> a0) -> Proxy (StreamBody' mods framing ct a :> sub) -> Link -> MkLink (StreamBody' mods framing ct a :> sub) a0 # | |
| HasLink sub => HasLink (ReqBody' mods ct a :> sub :: Type) | |
| HasLink sub => HasLink (RemoteHost :> sub :: Type) | |
Defined in Servant.Links Associated Types type MkLink (RemoteHost :> sub) a # Methods toLink :: (Link -> a) -> Proxy (RemoteHost :> sub) -> Link -> MkLink (RemoteHost :> sub) a # | |
| (KnownSymbol sym, ToHttpApiData v, HasLink sub, SBoolI (FoldRequired mods)) => HasLink (QueryParam' mods sym v :> sub :: Type) | |
Defined in Servant.Links Associated Types type MkLink (QueryParam' mods sym v :> sub) a # Methods toLink :: (Link -> a) -> Proxy (QueryParam' mods sym v :> sub) -> Link -> MkLink (QueryParam' mods sym v :> sub) a # | |
| (KnownSymbol sym, ToHttpApiData v, HasLink sub) => HasLink (QueryParams sym v :> sub :: Type) | |
Defined in Servant.Links Associated Types type MkLink (QueryParams sym v :> sub) a # Methods toLink :: (Link -> a) -> Proxy (QueryParams sym v :> sub) -> Link -> MkLink (QueryParams sym v :> sub) a # | |
| (KnownSymbol sym, HasLink sub) => HasLink (QueryFlag sym :> sub :: Type) | |
| HasLink sub => HasLink (Header' mods sym a :> sub :: Type) | |
| HasLink sub => HasLink (IsSecure :> sub :: Type) | |
| (HasLink sub, ToHttpApiData v) => HasLink (Fragment v :> sub :: Type) | |
| HasLink sub => HasLink (AuthProtect tag :> sub :: Type) | |
Defined in Servant.Links Associated Types type MkLink (AuthProtect tag :> sub) a # Methods toLink :: (Link -> a) -> Proxy (AuthProtect tag :> sub) -> Link -> MkLink (AuthProtect tag :> sub) a # | |
| HasLink sub => HasLink (Summary s :> sub :: Type) | |
| HasLink sub => HasLink (Description s :> sub :: Type) | |
Defined in Servant.Links Associated Types type MkLink (Description s :> sub) a # Methods toLink :: (Link -> a) -> Proxy (Description s :> sub) -> Link -> MkLink (Description s :> sub) a # | |
| (ToHttpApiData v, HasLink sub) => HasLink (Capture' mods sym v :> sub :: Type) | |
| (ToHttpApiData v, HasLink sub) => HasLink (CaptureAll sym v :> sub :: Type) | |
Defined in Servant.Links Associated Types type MkLink (CaptureAll sym v :> sub) a # Methods toLink :: (Link -> a) -> Proxy (CaptureAll sym v :> sub) -> Link -> MkLink (CaptureAll sym v :> sub) a # | |
| HasLink sub => HasLink (BasicAuth realm a :> sub :: Type) | |
| HasLink sub => HasLink (Vault :> sub :: Type) | |
| (KnownSymbol sym, HasLink sub) => HasLink (sym :> sub :: Type) | |
| type MkLink (HttpVersion :> sub :: Type) a | |
Defined in Servant.Links | |
| type MkLink (StreamBody' mods framing ct a :> sub :: Type) r | |
Defined in Servant.Links | |
| type MkLink (ReqBody' mods ct a :> sub :: Type) r | |
| type MkLink (RemoteHost :> sub :: Type) a | |
Defined in Servant.Links | |
| type MkLink (QueryParam' mods sym v :> sub :: Type) a | |
Defined in Servant.Links type MkLink (QueryParam' mods sym v :> sub :: Type) a = If (FoldRequired mods) v (Maybe v) -> MkLink sub a | |
| type MkLink (QueryParams sym v :> sub :: Type) a | |
Defined in Servant.Links | |
| type MkLink (QueryFlag sym :> sub :: Type) a | |
| type MkLink (Header' mods sym a :> sub :: Type) r | |
| type MkLink (IsSecure :> sub :: Type) a | |
| type MkLink (Fragment v :> sub :: Type) a | |
| type MkLink (AuthProtect tag :> sub :: Type) a | |
Defined in Servant.Links | |
| type MkLink (Summary s :> sub :: Type) a | |
| type MkLink (Description s :> sub :: Type) a | |
Defined in Servant.Links | |
| type MkLink (Capture' mods sym v :> sub :: Type) a | |
| type MkLink (CaptureAll sym v :> sub :: Type) a | |
Defined in Servant.Links | |
| type MkLink (BasicAuth realm a :> sub :: Type) r | |
| type MkLink (Vault :> sub :: Type) a | |
| type MkLink (sym :> sub :: Type) a | |
Defined in Servant.Links | |
type ReqBody = ReqBody' '[Required, Strict] #
Extract the request body as a value of type a.
Example:
>>>-- POST /books>>>type MyApi = "books" :> ReqBody '[JSON] Book :> Post '[JSON] Book
A type for responses without content-body.
Constructors
| NoContent |
Instances
| Eq NoContent | |
| Read NoContent | |
| Show NoContent | |
| Generic NoContent | |
| NFData NoContent | |
Defined in Servant.API.ContentTypes | |
| HasStatus NoContent | If an API can respond with |
Defined in Servant.API.UVerb | |
| Accept ctyp => AllMimeRender '[ctyp] NoContent | |
Defined in Servant.API.ContentTypes Methods allMimeRender :: Proxy '[ctyp] -> NoContent -> [(MediaType, ByteString)] # | |
| AllMime (ctyp ': (ctyp' ': ctyps)) => AllMimeRender (ctyp ': (ctyp' ': ctyps)) NoContent | |
Defined in Servant.API.ContentTypes Methods allMimeRender :: Proxy (ctyp ': (ctyp' ': ctyps)) -> NoContent -> [(MediaType, ByteString)] # | |
| type Rep NoContent | |
| type StatusOf NoContent | |
Defined in Servant.API.UVerb | |
Union of two APIs, first takes precedence in case of overlap.
Example:
>>>:{type MyApi = "books" :> Get '[JSON] [Book] -- GET /books :<|> "books" :> ReqBody '[JSON] Book :> Post '[JSON] () -- POST /books :}
Constructors
| a :<|> b infixr 3 |
Instances
| Bifunctor (:<|>) | |
| Bitraversable (:<|>) | |
Defined in Servant.API.Alternative Methods bitraverse :: Applicative f => (a -> f c) -> (b -> f d) -> (a :<|> b) -> f (c :<|> d) # | |
| Bifoldable (:<|>) | |
| Biapplicative (:<|>) | |
Defined in Servant.API.Alternative | |
| Functor ((:<|>) a) | |
| Foldable ((:<|>) a) | |
Defined in Servant.API.Alternative Methods fold :: Monoid m => (a :<|> m) -> m # foldMap :: Monoid m => (a0 -> m) -> (a :<|> a0) -> m # foldMap' :: Monoid m => (a0 -> m) -> (a :<|> a0) -> m # foldr :: (a0 -> b -> b) -> b -> (a :<|> a0) -> b # foldr' :: (a0 -> b -> b) -> b -> (a :<|> a0) -> b # foldl :: (b -> a0 -> b) -> b -> (a :<|> a0) -> b # foldl' :: (b -> a0 -> b) -> b -> (a :<|> a0) -> b # foldr1 :: (a0 -> a0 -> a0) -> (a :<|> a0) -> a0 # foldl1 :: (a0 -> a0 -> a0) -> (a :<|> a0) -> a0 # toList :: (a :<|> a0) -> [a0] # length :: (a :<|> a0) -> Int # elem :: Eq a0 => a0 -> (a :<|> a0) -> Bool # maximum :: Ord a0 => (a :<|> a0) -> a0 # minimum :: Ord a0 => (a :<|> a0) -> a0 # | |
| Traversable ((:<|>) a) | |
| (HasLink a, HasLink b) => HasLink (a :<|> b :: Type) | |
| (Bounded a, Bounded b) => Bounded (a :<|> b) | |
| (Eq a, Eq b) => Eq (a :<|> b) | |
| (Show a, Show b) => Show (a :<|> b) | |
| (Semigroup a, Semigroup b) => Semigroup (a :<|> b) | |
| (Monoid a, Monoid b) => Monoid (a :<|> b) | |
| type MkLink (a :<|> b :: Type) r | |
Alias types
type HttpDescription = Description Source #
type HttpSummary = Summary Source #