Как документировать пользовательское действие POST в API Platform через Swagger Decorator? - PullRequest
1 голос
/ 09 апреля 2020

В документации есть этот пример , но он показывает только, как добавить одну операцию GET. Я хотел бы знать, как я могу добавить собственный маршрут POST в документацию.

У меня проблемы с отображением примера тела запроса с ожидаемыми значениями для отправки (имя пользователя и адрес электронной почты, в этом примере)

Моя попытка

<?php
// api/src/Swagger/SwaggerDecorator.php

namespace App\Swagger;

use Symfony\Component\Serializer\Normalizer\NormalizerInterface;

final class SwaggerDecorator implements NormalizerInterface
{
    private $decorated;

    public function __construct(NormalizerInterface $decorated)
    {
        $this->decorated = $decorated;
    }

    public function normalize($object, $format = null, array $context = [])
    {
        $docs = $this->decorated->normalize($object, $format, $context);


        $customDefinition = [
            'tags' => [
                'default'
            ],
            'name' => 'fields',
            'description' => 'Testing decorator',
            'default' => 'id',
            'in' => 'query',
            'requestBody' => 
                [
                    'content' => [
                        'application/json' => [
                            'schema' => [
                                'description' => 'abcd',
                                'required' => [
                                    'username', 'email'
                                ],
                                'properties' => [
                                    'username', 'email'
                                ],
                            ]
                        ]
                    ],
                    'description' => 'testing'
                ],
        ];

        $docs['paths']['/testing']['post']['parameters'][] = $customDefinition;

        return $docs;
    }

    public function supportsNormalization($data, $format = null)
    {
        return $this->decorated->supportsNormalization($data, $format);
    }
}

Но это не работает. enter image description here

...