module Roar::JSON::HAL
Including the JSON::HAL
module in your representer will render and parse documents following the HAL
specification: stateless.co/hal_specification.html Links
will be embedded using the _links
key, nested resources with the _embedded
key.
Embedded resources can be specified when calling property or +collection using the :embedded => true option.
Link arrays can be defined using ::links
.
CURIEs are specified with the - surprise - ::curie
class method.
Example:
module OrderRepresenter include Roar::JSON::HAL property :id collection :items, :class => Item, :extend => ItemRepresenter, :embedded => true link :self do "http://orders/#{id}" end links :self do [{:lang => "en", :href => "http://en.hit"}, {:lang => "de", :href => "http://de.hit"}] end curies do [{:name => :doc, :href => "//docs/{rel}", :templated => true} ] end end
Renders to
"{\"id\":1,\"_embedded\":{\"items\":[{\"value\":\"Beer\",\"_links\":{\"self\":{\"href\":\"http://items/Beer\"}}}]},\"_links\":{\"self\":{\"href\":\"http://orders/1\"}}}"
Public Class Methods
included(base)
click to toggle source
# File lib/roar/json/hal.rb, line 47 def self.included(base) base.class_eval do include Roar::JSON include Links # overwrites #links_definition_options. include Resources include LinksReader # gives us Decorator#links => {self=>< >} end end