Skip to content
48 changes: 48 additions & 0 deletions core/serialization.md
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,54 @@ feature of the Symfony Serializer component.
In addition to groups, you can use any option supported by the Symfony Serializer. For example, you can use [`enable_max_depth`](https://symfony.com/doc/current/components/serializer.html#handling-serialization-depth)
to limit the serialization depth.

```php
<?php
// api/src/Entity/Book.php

namespace App\Entity;

use ApiPlatform\Core\Annotation\ApiResource;
use Symfony\Component\Serializer\Annotation\Groups;
use Symfony\Component\Serializer\Annotation\MaxDepth;

#[ApiResource(
normalizationContext: ['groups' => 'read', 'enable_max_depth' => true],
denormalizationContext: ['groups' => ['write']],
)]
class Book
{
#[Groups(["read", "write"])]
public $name;

#[Groups("write")]
#[MaxDepth(1)]
public $author;

// ...
}
```

```yaml
# api/config/api_platform/resources.yaml
resources:
App\Entity\Book:
attributes:
normalization_context:
groups: ['read']
enable_max_depth: true
denormalization_context:
groups: ['write']

# api/config/serialization/Book.yaml

App\Entity\Book:
properties:
author:
groups: ['write']
max_depth: 1
```


### Configuration

Just like other Symfony and API Platform components, the Serializer component can be configured using annotations, XML
Expand Down