License | BSD3 |
---|---|
Stability | experimental |
Safe Haskell | None |
Language | Haskell2010 |
Provides the contract for the web api. The contract consists of WebApi
and ApiContract
classes.
WebApi
contains information related to the entire group of APIs whereas ApiContract
is concerned with information related to each end point. Once the contract is written, it can be then used to
- Write a
WebApiImplementation
and correspondingApiHandler
for it. - Get a client for web api.
- Get a mock server and a mock client for web api.
... and possibly more.
- class OrdVersion (Version p) => WebApi p where
- class (SingMethod m, WebApi p) => ApiContract p m r where
- type family PathParam' m r :: *
- data Request m r = Req {}
- data Response m r
- data ApiError m r = ApiError {}
- data OtherError = OtherError {}
- module WebApi.Method
API Contract
class OrdVersion (Version p) => WebApi p Source
Describes a collection of web apis.
class (SingMethod m, WebApi p) => ApiContract p m r Source
Describes a contract for a single API end point.
Type of path param that this end point takes in.
Defaults to PathParam' m r
.
type QueryParam m r Source
Type of query param that this end point takes in.
Defaults to ()
.
Type form params that this end point takes in.
Defaults to ()
.
Type of file params that this end point takes in.
Defaults to ()
.
Type of header params that this end point takes in.
Defaults to ()
.
Type of cookie params that this end point takes in.
Defaults to ()
.
Type of result of this end point when successful.
Defaults to ()
.
Type of result of this end point when a known failure occurs.
Defaults to ()
.
Type of headers of this end point gives out.
Defaults to ()
.
Type of cookies of this end point gives out.
Defaults to ()
.
type ContentTypes m r :: [*] Source
List of Content Types that this end point can serve.
Defaults to [JSON]
.
Request and Response
type family PathParam' m r :: * Source
Type of the path params that a route r
has. If a custom routing system is being used,
then you will have to give an instance for PathParam'
for types being used in routing.
Please take a look at the existing instances of PathParam'
for reference.
type PathParam' m (Static s) = () Source | |
type PathParam' m ((:/) k k1 p1 p2) Source |
Datatype representing a request to route r
with method m
.
Req | |
|
Datatype representing a response from route r
with method m
.
Datatype representing a known failure from route r
with method m
.
data OtherError Source
Datatype representing an unknown failure.
Methods
module WebApi.Method