Платформа API DTO не используется в документации Swagger

#php #symfony #api-platform.com

Вопрос:

У меня есть объект и DTO, которые я хотел бы использовать в запросах на публикацию. Вот мои два занятия.

 <?php

declare(strict_types=1);

namespace AppEntity;

use ApiPlatformCoreAnnotationApiResource;
use AppDtoTestPost;

/**
 * @ApiResource(
 *     collectionOperations={
 *          "post"={
 *              "input"=TestPost::class
 *          }
 *     },
 *     itemOperations={}
 * )
 */
final class Test
{
    public string $foo;

    public string $bar;
}
 
 <?php

declare(strict_types=1);

namespace AppDto;

final class TestPost
{
    /**
     * @var string
     */
    public string $xxx;
}

 

Я ожидал, что в документации Swagger будет показано поле «xxx». Вместо этого отображаются два поля «foo» и «bar» исходного объекта. Я что-то забыл?

Ответ №1:

Похоже, мне тоже нужно определить результат. Это работает, когда я добавляю ключ «вывод», например:

 <?php

declare(strict_types=1);

namespace AppEntity;

use ApiPlatformCoreAnnotationApiResource;
use AppDtoTestPost;

/**
 * @ApiResource(
 *     collectionOperations={
 *          "post"={
 *              "input"=TestPost::class,
 *              "output"=false
 *          }
 *     },
 *     itemOperations={}
 * )
 */
final class Test
{
    public string $foo;

    public string $bar;
}