Как в api-platform 3 версии заменить функционал itemOperations из предыдущих версий?

Как перевести аннотацию для версии 2 API Platform в атрибуты для версии 3, когда речь идет об операциях для отдельных элементов?
  • 31 марта 2024 г. 19:39
Ответы на вопрос 2
В API Platform 3 версии функционал itemOperations был заменен на операции через атрибуты. 

Для перевода аннотации в атрибуты версии 2 API Platform в версию 3, когда речь идет об операциях для отдельных элементов, необходимо использовать атрибуты @ApiProperty и @ApiSubresource. Например, если в версии 2 была аннотация @Get(itemOperations={
    "get"={"method"="GET", "path"="/items/{id}"},
    "put"={"method"="PUT", "path"="/items/{id}"},
})
то в версии 3 это можно перевести следующим образом:

```php
/**
 * @ApiProperty(
 *     attributes={
 *         "get"={"method"="GET", "path"="/items/{id}"},
 *         "put"={"method"="PUT", "path"="/items/{id}"}
 *     }
 * )
 */
```

Таким образом, используя атрибуты @ApiProperty и @ApiSubresource, можно перевести функционал операций для отдельных элементов из версии 2 в версию 3 API Platform.
Сам ещё не ставил третью версию, но одним глазом посмотрел документацию, и вроде как они тупо по названию классов в аргументе options ориентируются. В принципе, это логично, если подумать. Но не очевидно. 
#[ApiResource(
    operations: [
        new Get(), // item
        new Put(), // item
        new Patch(), // item
        new Delete(), // item
        new GetCollection(), // collection
        new Post() // collection
    ],
)]
Похожие вопросы