{{tag>[php api-platform symfony]}}

====== Операции / Operations ======

<code php>
<?php
// api/src/Entity/Book.php
namespace App\Entity;

use ApiPlatform\Metadata\ApiResource;
use ApiPlatform\Metadata\Get;
use ApiPlatform\Metadata\Post;
use App\Controller\CreateBookPublication;

#[ApiResource(types: ['https://schema.org/Book'], operations: [
    new Get(),
    new Post(name: 'publication', uriTemplate: '/books/{id}/publication')
])]
class Book
{
    // ...
}
</code>

<code php>
#[ApiResource(
    shortName: 'User',
    description: 'Utilisateurs',
    operations: [
        new Get(),
        new GetCollection(),
        new Post(),
        new Put(),
        new Patch(),
        new Delete(),
    ],
    normalizationContext: [
        'groups' => ['user:read'],
    ],
    denormalizationContext: [
        'groups' => ['user:write'],
    ],
    security: "is_granted('ROLE_USER')"
)]
</code>
  
===== #[ApiResource] =====

2.7 ApiPlatform\Metadata\ApiResource вместо 2.6 ApiPlatform\Core\Annotation\ApiResource

|Перед	|После|
|iri: 'https://schema.org/Book'	|types: ['https://schema.org/Book']|
|path: '/books/{id}/publication'	|uriTemplate: '/books/{id}/publication'
|identifiers: []	|uriVariables: []|
|attributes: []	|extraProperties: []|
|attributes: ['validation_groups' => ['a', 'b']]	|validationContext: ['groups' => ['a', 'b']]|

===== #[ApiProperty] =====

2.7 ApiPlatform\Metadata\ApiProperty вместо 2.6 ApiPlatform\Core\Annotation\ApiProperty

| Перед	   | После                   |
| iri:          | 'https://schema.org/Book'	   | types: ['https://schema.org/Book']|
| type:         | 'string'	                    | builtinTypes: ['string']|

====== Symfony / API Platform ======

{{topic>[symfony]}}