API doc example
unknown
plain_text
9 months ago
2.1 kB
10
Indexable
<?php
declare(strict_types=1);
namespace Zino\CoreBundle\Controller\Api;
use Nelmio\ApiDocBundle\Annotation\Areas;
use Nelmio\ApiDocBundle\Annotation\Model;
use OpenApi\Attributes\HeaderParameter;
use OpenApi\Attributes\JsonContent;
use OpenApi\Attributes\Parameter as OpenApiParameter;
use OpenApi\Attributes\Response as OpenApiResponse;
use OpenApi\Attributes\Schema;
use OpenApi\Attributes\Tag as OpenApiTag;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Attribute\Route;
use Symfony\Component\Routing\Requirement\EnumRequirement;
use Zino\CoreBundle\Attributes\SpaRoute;
use Zino\CoreBundle\Dto\Features\Error\NotFound\NotFoundResponseBody;
use Zino\CoreBundle\Dto\JsonForm\Form;
use Zino\CoreBundle\Form\Factory\JsonFormEnum;
use Zino\CoreBundle\Form\Factory\JsonFormFactory;
#[Route(path: '/spa/forms', name: 'spa_forms_')]
class FormsApiController extends AbstractController
{
#[Areas(['new_api'])]
#[OpenApiParameter(name: 'form', description: 'Returns form', in: 'path', schema: new Schema(type: 'string', enum: JsonFormEnum::class))]
#[OpenApiResponse(response: Response::HTTP_OK, description: 'Returns schema for requested form', content: new JsonContent(ref: new Model(type: Form::class)))]
#[OpenApiResponse(response: Response::HTTP_NOT_FOUND, description: 'Happens when requesting undefined form', content: new JsonContent(ref: new Model(type: NotFoundResponseBody::class)))]
#[HeaderParameter(name: 'X-Locale', description: 'Pass request locale', required: true, schema: new Schema(type: 'string', default: 'en'))]
#[OpenApiTag(name: 'forms')]
#[SpaRoute]
#[Route(
path: '/{form}',
name: 'get_form',
requirements: ['form' => new EnumRequirement(JsonFormEnum::class)],
methods: ['GET'],
)]
public function getForm(JsonFormEnum $form, JsonFormFactory $jsonFormFactory): JsonResponse
{
return new JsonResponse($jsonFormFactory->getForm($form)->get());
}
}Editor is loading...
Leave a Comment