Ruby gem for rendering JSON API documents.
- Chat: gitter
- Twitter: @jsonapirb
- Docs: jsonapi-rb.org
# In Gemfilegem'jsonapi-renderer'
then
$ bundle
or manually via
$ gem install jsonapi-renderer
First, require the gem:
require'jsonapi/renderer'
A resource here is any class that implements the following interface:
classResourceInterface# Returns the type of the resource.# @return [String]defjsonapi_type;end# Returns the id of the resource.# @return [String]defjsonapi_id;end# Returns a hash containing, for each included relationship, an array of the# resources to be included from that one.# @param included_relationships [Array<Symbol>] The keys of the relationships# to be included.# @return [Hash{Symbol => Array<#ResourceInterface>}]defjsonapi_related(included_relationships);end# Returns a JSON API-compliant representation of the resource as a hash.# @param options [Hash]# @option fields [Set<Symbol>, Nil] The requested fields, or nil.# @option include [Set<Symbol>] The requested relationships to# include (defaults to []).# @return [Hash]defas_jsonapi(options={});endend
JSONAPI.render(data: resource,include: include_string,fields: fields_hash,meta: meta_hash,links: links_hash)
This returns a JSON API compliant hash representing the described document.
JSONAPI.render(data: resources,include: include_string,fields: fields_hash,meta: meta_hash,links: links_hash)
This returns a JSON API compliant hash representing the described document.
JSONAPI.render(data: resource,relationship: :posts,include: include_string,fields: fields_hash,meta: meta_hash,links: links_hash)
This returns a JSON API compliant hash representing the described document.
JSONAPI.render_errors(errors: errors,meta: meta_hash,links: links_hash)
where errors
is an array of objects implementing the as_jsonapi
method, that returns a JSON API-compliant representation of the error.
This returns a JSON API compliant hash representing the described document.
The generated JSON fragments can be cached in any cache implementation supporting the fetch_multi
method.
When using caching, the serializable resources must implement an additional jsonapi_cache_key
method:
# Returns a cache key for the resource, parameterized by the `include` and# `fields` options.# @param options [Hash]# @option fields [Set<Symbol>, Nil] The requested fields, or nil.# @option include [Set<Symbol>] The requested relationships to# include (defaults to []).# @return [String]defjsonapi_cache_key(options={});end
The cache instance must be passed to the renderer as follows:
JSONAPI.render(data: resources,include: include_string,fields: fields_hash,cache: cache_instance)
jsonapi-renderer is released under the MIT License.