Rest API library.
Add support for versionless APIs, thanks to Tenor Biel. This is a breaking change. Old API users will have to add
Versionedbefore their list of api versions, so it becomes
Versioned [ (mkVersion ...) ].
- Remove Show constraint from ReadId
Allow specifying custom multi-action. Previously there was always a top-level POST that could perform multiple actions in the API at once. Now you can customize this handler (e.g. to add logging or optimisations) , or turn it off completely by returning
Because this is an experimental feature, it's exposed through
Rest.Driver.Routing.Internaland is subject to future breaking changes without a major bump.
There is one breaking change due to this: the signature of
routenow requires a
m. This propagates to
Rest.Run.apiToHandler(')and related functions in the rest-happstack, rest-snap and rest-wai packages.
Security: don't allow newlines in filenames.
- Fix documentation for
Drop (internal) dependency on either, this removes 20(!) transitive dependecies.
File output now needs a third component, specifying if the file is served as 'attachment' or not. If so, this will make most browsers download the file instead of displaying it. This is a breaking change. You can add a third element
Falseto the return value to get the old behaviour.
Re-exported XML serializable types from
rest-typesno longer have
PFinstances since they are now using GHC Generics.
Remove unneeded constraint from
Change input/output dictionaries to indicate separately if there are dictionaries, and for what type. This is a breaking change. The most likely problems are where
Reason ()is explicitly used in handlers without error dictionaries. Simply replace these with
Reason_. Additionally, all
some*combinators are deprecated now. They are just the identity function and can be removed.
The types of all dictionary combinators have changed, the Dicts type, the dicts smart constructor, empty, SomeError, Modifier, many internal (but exported) things in Rest.Driver.Perform, some types in Rest.Handler, and Void was moved.
Switched all usages of
ExceptT. To stay backwards compatible with older versions of
mtlyou can use the
mtl-compatpackages. To update your code:
Rest.Error. It combines two
ExceptTcomputations yielding the last error if both fail. This is a replacement for using
Alternative ExceptTinstance needs a
Monoidinstance for the error.
Fix typos in haddock for
Switch to explicit export lists where missing.
Allow utf8-string 1.
Fix for base 4.8/GHC 7.10.
- Allow setting the method in the requests in a top level multi handler.
Restclass function now returns a
Rest.Driver.Routingnow takes a
Methodtype was removed from
Rest.Driver.Typesand moved to rest-types'
Allow top level multi handler as a POST as well as a GET. Technically, you're not allowed to vary the response based on the body of a GET. Also, in some frameworks (e.g. jQuery) it isn't possible to set the body of a GET.
Typo fixes in documentation.
Declare correct error return type for derived multi handlers. These were declared as
Reason (Reason e), now they are
Reason (). This generated confusing documentation.
rest-types. Still re-exported.
- Added a
domainReasonto have a
ToResponseCodeconstraint instead of an explicit argument.
application/octet-streamaccept headers now match file outputs.
Allow random 1.1.*
Fix bug in Chrome when serving files with commas in name.
addHeaderdictionary combinator, to extend instead of replace the header dictionaries. For this, a constructor
TwoHeaderswas added to
- Relax the types of
mkOrderedListingto allow parameters and headers.
- Make test cases compile again.
actionhas been renamed to
staticsince it is tied to
staticsand to disambiguate it from the unrelated
rest-stringmap == 0.2.*
mtl == 2.2.*and
transformers == 0.4.*
Content-Dispositionto provide filenames for file responses. This slightly changes the semantics of
FileO: what used to be interpreted as the file extension is now used for the whole file name.
Rest.Types.Container.StringMapHas been replaced by
rest-stringmap. This changes the XML serialization format of multi part messages, the old format was
<map><key>k</key>v[...]</map>and the new one is
- Add multi-delete handler. It is used on a DELETE to
/<resource>/<id>/and is derived from the single delete handler.
- Don't put
Cache-Control: privateheader on served files. This way they can be cached by public proxies, e.g. cloudfront.
- Explicit exports in
Rest.Driver.Routing, removing a lot of private functions from the public interface.