This module provides a user-friendly way to define how entity data is structured for output, allowing you to customize the JSON representation of nodes, users, and other entities using YAML files. It offers features like grouping fields, adding custom data, and creating different output formats without writing custom code.
This module makes it really easy to normalize the nodes in a more useful way than Drupal does by default. You can define the output of each entity type (like nodes, users, terms, etc.) per bundle using YAML files instead of creating everything in code.
Some of the key features are:
- Define output in readable YAML files.
- Extend definitions: create basic and bundle specific definitions.
- Different definitions per normalization format.
- Combine fields in groups without writing code.
- Add custom data to the output using 'pseudo' fields.
- Easy chaining of simple normalizers.
Configuration
Use RestUI (or code) to enable the JSON (or another) output format for content so you can fetch nodes using a url like /node/1?_format=json.
After this, you can configure the JSON output of entities using YAML files in the
root of your module using the pattern:
<module_name>.entity_normalization.yml
Example
user.base:
type: user
bundle: user
fields:
uid:
name: id
name:
article.base:
type: node
bundle: [article]
fields:
nid:
name: id
url:
type: pseudo
normalizer: entity_url.normalizer
title:
uid:
name: author
This definition will give the following output when calling "/article/1234/my-title.html?_format=json":
{
"id": 1234,
"url": "/article/1234/my-title.html",
"title": "My Title",
"author": {
"id": 1,
"name": "Administrator"
}
}