diff --git a/servant.cabal b/servant.cabal index 70c5e028..84703f50 100644 --- a/servant.cabal +++ b/servant.cabal @@ -31,6 +31,7 @@ library Servant.API.Delete Servant.API.Get Servant.API.Header + Servant.API.Patch Servant.API.Post Servant.API.Put Servant.API.QueryParam diff --git a/src/Servant/API.hs b/src/Servant/API.hs index 27ef7f93..83f7f77a 100644 --- a/src/Servant/API.hs +++ b/src/Servant/API.hs @@ -27,6 +27,8 @@ module Servant.API ( module Servant.API.Delete, -- | PUT requests module Servant.API.Put, + -- | PATCH requests + module Servant.API.Patch, -- * Untyped endpoints -- | Plugging in a wai 'Network.Wai.Application', serving directories @@ -46,6 +48,7 @@ import Servant.API.Get ( Get ) import Servant.API.Header ( Header ) import Servant.API.Post ( Post ) import Servant.API.Put ( Put ) +import Servant.API.Patch ( Patch ) import Servant.API.QueryParam ( QueryFlag, QueryParams, QueryParam ) import Servant.API.MatrixParam ( MatrixFlag, MatrixParams, MatrixParam ) import Servant.API.Raw ( Raw ) diff --git a/src/Servant/API/Patch.hs b/src/Servant/API/Patch.hs new file mode 100644 index 00000000..d2643d5b --- /dev/null +++ b/src/Servant/API/Patch.hs @@ -0,0 +1,19 @@ +{-# LANGUAGE DeriveDataTypeable #-} +module Servant.API.Patch where + +import Data.Typeable ( Typeable ) + +-- | Endpoint for PATCH requests. The type variable represents the type of the +-- response body (not the request body, use 'Servant.API.ReqBody.ReqBody' for +-- that). +-- +-- If the HTTP response is empty, only () is supported. +-- +-- Example: +-- +-- > -- POST /books +-- > -- with a JSON encoded Book as the request body +-- > -- returning the just-created Book +-- > type MyApi = "books" :> ReqBody Book :> Post Book +data Patch a + deriving Typeable