BSD-3-Clause licensed by Servant Contributors
This version can be pinned in stack with:servant-0.12.1@sha256:e39d8ab7e27eb985233d6de26bb9acbdf60a971c802f51d03bd731f4702c660a,4804
Module documentation for 0.12.1
Depends on 17 packages
(full list with versions ) :
aeson ,
attoparsec ,
base ,
base-compat ,
bytestring ,
case-insensitive ,
http-api-data ,
http-media ,
http-types ,
mmorph ,
mtl ,
natural-transformation ,
network-uri ,
string-conversions ,
tagged ,
text ,
vault Used by 33 packages in
nightly-2018-02-22 (full list with versions ) :
avers-api ,
avers-server ,
giphy-api ,
gogol-core ,
gym-http-api ,
lackey ,
language-puppet ,
lxd-client ,
microsoft-translator ,
miso ,
servant-auth-cookie ,
servant-blaze ,
servant-cassava ,
servant-client-core ,
servant-docs ,
servant-elm ,
servant-exceptions ,
servant-foreign ,
servant-generic ,
servant-github-webhook ,
servant-js ,
servant-JuicyPixels ,
servant-kotlin ,
servant-lucid ,
servant-mock ,
servant-purescript ,
servant-server ,
servant-static-th ,
servant-subscriber ,
servant-swagger ,
servant-swagger-ui ,
servant-yaml ,
slack-web A family of combinators for defining webservices APIs and serving them
You can learn about the basics in the tutorial .
CHANGELOG
The latest version of this document is on GitHub.
0.12.1
Bug fixes
Prevent double-escaping in link segments
(#835
#878 )
0.12
Significant changes
servant-client servant-client-core
Factored out of servant-client
all the functionality that was
independent of the http-client
backend.
(#803
#821 )
If you have own combinators, you’ll need to add an additional m
argument
in HasClient
, Client
and clientWithRoute
:
-class HasClient api
- type Client (api :: *) :: *
- clientWithRoute :: Proxy api -> Req -> Client api
+class HasClient m api
+ type Client (m :: * -> *) (api :: *) :: *
+ clientWithRoute :: Proxy m -> Proxy api -> Request -> Client m api
See https://github.com/haskell-servant/servant-auth/pull/67/commits/f777818e3cc0fa3ed2346baff8328e96d62b1790 for a real world example.
servant-server Added hoistServer
member to the HasServer
class, which is HasServer
specific enter
.
(#804
#824 )
enter
isn’t exported from Servant
module anymore. You can change
enter
to hoistServer
in a straight forward way.
Unwrap natural transformation and add a api type Proxy
:
-server = enter (NT nt) impl
+server = hoistServer (Proxy :: Proxy MyApi) nt impl
If you have own combinators, you’ll need to define a new method of
HasServer
class, for example:
type ServerT (MyCombinator :> api) m = MyValue -> ServerT api m
hoistServerWithContext _ pc nt s = hoistServerWithContext (Proxy :: Proxy api) pc nt . s
See https://github.com/haskell-servant/servant-auth/pull/67/commits/8ee3b6315247ac076516213fd7cfcdbfdb583ac9 for a real world example.
Add Description
and Summary
combinators
(#767 )
It’s possible to annotate endpoints with free form text.
This information is used by e.g. by servant-swagger
, see screenshot in
https://github.com/phadej/servant-swagger-ui
Lower :>
and :<|>
infix precedence to 4 and 3 respectively
(#761 )
This shouldn’t affect you, except if you define your own infix operators
for Servant type-level DSL.
Other changes
servant-foreign Derive Data
for all types
(#809 )
servant-docs Add authentication lenses
(#787 )
servant-docs Generated markdown improvements
(#813
#767
#790
#788 )
Add addLinks
to generate all links for unnested APIs.
(#851 )
Allow newest dependencies
(#772
#842 )
Documentation improvements and typo fixes
(#757
#771
#775
#790
#791
#806 )
Development process improvements
(#764
#839 )
0.11
Breaking changes
Other changes
Add a type representing an empty API
(#753 )
Add linkURI'
and Link
accessors
(#745
, #717
, #715 )
Prepare for GHC-8.2
(#722 )
Add HasLink AuthProtect
instance
(#720 )
AllCTRender [] ()
TypeError
(use NoContent
)
(#671 )
Documentation improvements and typo fixes
(#702
, #709
, #716
, #725
, #727 )
0.10
Breaking changes
Other changes
Add Servant.API.TypeLevel
module with type families to work with API types.
(#345
, #305 )
Default JSON content type change to application/json;charset=utf-8
.
(#263 )
Related browser bugs:
Chromium and
Firefox
Accept
class may accept multiple content-types. MimeUnrender
adopted as well.
(#613
, #615 )
0.9.1
Added ‘noHeader’ function for not adding response headers.
0.9
Added Eq, Show, Read, Generic and Ord instances to IsSecure
BACKWARDS INCOMPATIBLE: replace use of ToFromByteString
with To/FromHttpApiData
for GetHeaders/BuildHeadersTo
BACKWARDS INCOMPATIBLE: Moved From/ToFormUrlEncoded
classes, which were renamed to From/ToForm
to http-api-data
0.8.1
Add CaptureAll
combinator. Captures all of the remaining segments in a URL.
Add Servant.API.TypeLevel
module, with frequently used type-level
functionaliy.
0.8
Minor fixes, documentation changes and cabal tweaks
0.7.1
0.5
Add WithNamedConfig
combinator.
Add HttpVersion
, IsSecure
, RemoteHost
and Vault
combinators
Fix safeLink, so Header is not in fact required.
Add more instances for (:<|>)
Use http-api-data
instead of Servant.Common.Text
Remove matrix params.
Add PlainText String MimeRender and MimeUnrender instances.
Add new Verbs
combinator, and make all existing and new verb combinators
type synonyms of it.
Add BasicAuth
combinator to support Basic authentication
Add generalized authentication support
0.4.2
Fix missing cases for Patch
in safeLink
0.4.1
Allow whitespace after parsing JSON
Stricter matching for safeLink
for Capture
0.4
Delete
now is like Get
, Post
, Put
, and Patch
and returns a response body
Multiple content-type/accept support for all the relevant combinators
Provide JSON , PlainText , OctetStream and FormUrlEncoded content types out of the box
Type-safe link generation to API endpoints
Support for the PATCH HTTP method
Removed the home-made QuasiQuote for writing API types in a more human-friendly format until we come up with a better design for it
Make most if not all of the haddock code examples run through doctest
Some general code cleanup
Add response headers
Stackage is a service provided by the
Haskell Foundation
│ Originally developed by
FP Complete