1.6 KiB
Adapters
AMS does this through two components: serializers and adapters.
Serializers describe which attributes and relationships should be serialized.
Adapters describe how attributes and relationships should be serialized.
You can use one of the built-in adapters (FlattenJSON is the default one) or create one by yourself, but you won't need to implement an adapter unless you wish to use a new format or media type with AMS.
Built in Adapters
FlattenJSON - Default
It's the default adapter, it generates a json response without a root key. Doesn't follow any specifc convention.
JSON
It also generates a json response but always with a root key. The root key can't be overridden, and will be automatically defined accordingly to the objects being serialized. Doesn't follow any specifc convention.
JSONAPI
This adapter follows version 1.0 of the format specified in
jsonapi.org/format. It will include the associated
resources in the "included" member when the resource names are included in the
include option.
render @posts, include: ['authors', 'comments']
# or
render @posts, include: 'authors,comments'
Choosing an adapter
If you want to use a different adapter, such as JsonApi, you can change this in an initializer:
ActiveModel::Serializer.config.adapter = ActiveModel::Serializer::Adapter::JsonApi
or
ActiveModel::Serializer.config.adapter = :json_api
If you want to have a root key in your responses you should use the Json adapter, instead of the default FlattenJson:
ActiveModel::Serializer.config.adapter = :json