liberator-mixin.hal.core
A liberator mixin to add HAL support to liberator.
In short:
- Adds
application/hal+json
as a supported media type. - Adds support for JSON serialisation for maps and seqs for the HAL media type.
- Adds support for halboy resource serialisation.
- Adds a default handler responding with an empty HAL resource for
:handle-not-found
. - Adds a HAL error representation for use with the validation mixin.
Depends on:
- the JSON mixin,
- the hypermedia mixin.
Optionally extends:
- the validation mixin.
JSON serialisation support
The JSON serialisation support for the application/hal+json
media type uses the same underlying JSON encoder as the JSON mixin. If that mixin is configured with a custom JSON encoder, all application/hal+json
responses will use the custom JSON encoder.
halboy Resource
support
The halboy resource support will add a :discovery
link to any returned resource and expects bidi
:routes
to be available in the context
, containing a route named :discovery
. The hypermedia mixin adds routes to the context
so nothing further is needed if that mixin is in use.
with-exception-handler
(with-exception-handler)
Returns a mixin which adds a generic exception handler, logging the exception and returning an error representation masking the exception.
This mixin expects a :logger
to be present on the resource. If no :logger
is found, nothing will be logged.
with-hal-error-representation
(with-hal-error-representation)
Returns a mixin adding a HAL error representation factory function to the resource, at :error-representation
, for use by other mixins, such as liberator-mixin.validation
when they need to render errors.
The error representation factory function expects the context to include a :self
href, an :error-id
and an :error-context
used in the resulting representation.
with-hal-media-type
(with-hal-media-type)
Returns a mixin to add the HAL media type to the available media types.