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

====== API Platform ======

  * [[Конфигурация / Config]]
  * [[Операции / Operations]]
  * [[Расширения ORM / Extension]]
  * [[Фильтры / Filters]]
  * [[Сортировка / Overriding]]
  * [[Проверка / Validation]]
  * [[Serialization Process]]
  * [[Event System]]
  * [[FOSRestBundle]]
  * [[State Providers]] - адаптеры для пользовательских уровней сохраняемости, виртуальных полей, пользовательской гидратации
  * [[The Serialization/Deserialization Process]] -	объекты постобработки, созданные на основе полезной нагрузки, отправленной в теле HTTP-запроса
  * [[user]]
  * [[Security]] - пользовательская логика авторизации
  * [[Validation]] - пользовательская логика проверки
  * [[State Processors]] - настраиваемая бизнес-логика и вычисления для запуска до или после сохранения (например, почта, вызов внешнего API ...)
  * [[The Normalization/Denormalization Process]] -	настройка ресурса, отправляемого клиенту (добавление полей в документы JSON, кодирование кодов, дат ...)
  * [[Filters]] - создавайте фильтры для коллекций и автоматически документируйте их (OpenAPI, GraphQL, Hydra)
  * [[Serializer Context Builders]] - Динамическое изменение контекста сериализации (например, групп)
  * [[Messenger Handlers]] - создавайте 100% пользовательские, RPC, асинхронные, сервис-ориентированные конечные точки (следует использовать вместо пользовательских контроллеров, поскольку интеграция messenger совместима как с REST, так и с GraphQL, в то время как пользовательские контроллеры работают только с REST)
  * [[DTOs and Data]] - используйте определенный класс для представления структуры входных или выходных данных, связанных с операцией
  * [[Kernel Events]] - настройте HTTP-запрос или ответ (только REST, по возможности следует предпочесть другие точки расширения)
===== Версии =====

== версии 2.6 ==

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

use ApiPlatform\Core\Annotation\ApiResource;

#[ApiResource(
    iri: 'https://schema.org/Book',
    itemOperations: [
        'get',
        'post_publication' => [
            'method' => 'POST',
            'path' => '/books/{id}/publication',
        ],
    ])
]
class Book
{
    // ...
}
</code>

== версии 2.7 ==

<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>

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

{{topic>[symfony]}}