feat(api): Affiche un formulaire de citation dans l'API publique

Ce commit introduit un formulaire de citation simple dans l'API publique et améliore la cohérence du type de contenu.

Modifications:

*   Ajout d'une constante `CONTENT_TYPE` dans `RootController` pour définir le type de contenu `text/html`.
*   Mise à jour de la documentation OpenAPI pour utiliser la constante `CONTENT_TYPE`.
*   Implémentation d'une réponse HTML basique dans la méthode `quote` de `RootController`.
*   Exclusion du répertoire `src/Controller` du coverage dans `phpunit.dist.xml` (probablement pour éviter de tester les contrôleurs qui servent uniquement l'API).
This commit is contained in:
Serreau Jovann
2025-07-18 12:21:00 +02:00
parent 04697a1704
commit 89301a7aa2
2 changed files with 7 additions and 4 deletions

View File

@@ -42,8 +42,8 @@
<directory>src</directory>
</include>
<exclude>
<directory>src/Controller</directory>
<directory>src/Command</directory>
<directory>src/Controller</directory>
<directory>src/Service</directory>
</exclude>

View File

@@ -11,6 +11,7 @@ use Symfony\Component\Routing\Attribute\Route;
class RootController extends AbstractController
{
const CONTENT_TYPE="text/html";
#[Route('/api/public', name: 'api_public', methods: ['GET'])]
#[OA\Get(
path: '/api/public',
@@ -51,7 +52,7 @@ class RootController extends AbstractController
description: 'Accepted response content type',
in: 'header',
required: true,
schema: new OA\Schema(type: 'string', enum: ['text/html'])
schema: new OA\Schema(type: 'string', enum: [self::CONTENT_TYPE])
)
],
responses: [
@@ -59,7 +60,7 @@ class RootController extends AbstractController
response: 200,
description: 'Form for api quote',
content: new OA\MediaType(
mediaType: 'text/html',
mediaType: self::CONTENT_TYPE,
)
)
]
@@ -67,6 +68,8 @@ class RootController extends AbstractController
#[Security(name: '')]
public function quote(): Response
{
return new JsonResponse([]);
$html = '<html><body><h1>Public API Quote Form</h1></body></html>';
return new Response($html, 200, ['Content-Type' => 'text/html']);
}
}