API Platform

Операции / Operations

Расширения ORM / Extension

Фильтры / Filters

Сортировка / Overriding

Проверка / Validation

Serialization Process

Event System

FOSRestBundle

State Providers - адаптеры для пользовательских уровней сохраняемости, виртуальных полей, пользовательской гидратации

The Serialization/Deserialization Process - объекты постобработки, созданные на основе полезной нагрузки, отправленной в теле HTTP-запроса

User / UserRepository

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

<?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 { // ... }

версии 2.7

<?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 { // ... }

Symfony / API Platform