Add the root key to your API is quite simple with ActiveModelSerializers. The Adapter is what determines the format of your JSON response. The default adapter is the Attributes
which doesn't have the root key, so your response is something similar to:
{
"id": 1,
"title": "Awesome Post Tile",
"content": "Post content"
}
In order to add the root key you need to use the JSON
Adapter, you can change this in an initializer:
ActiveModelSerializers.config.adapter = :json
Note that adapter configuration has no effect on a serializer that is called
directly, e.g. in a serializer unit test. Instead, something like
UserSerializer.new(user).as_json
will always behave as if the adapter were
the 'Attributes' adapter. See Outside Controller
Usage for more details on recommended
usage.
You can also specify a class as adapter, as long as it complies with the ActiveModelSerializers adapters interface. It will add the root key to all your serialized endpoints.
ex:
{
"post": {
"id": 1,
"title": "Awesome Post Tile",
"content": "Post content"
}
}
or if it returns a collection:
{
"posts": [
{
"id": 1,
"title": "Awesome Post Tile",
"content": "Post content"
},
{
"id": 2,
"title": "Another Post Tile",
"content": "Another post content"
}
]
}
There are several ways to specify root when using the JSON adapter.