Skip to Content
SymfonyPartie 20 — Quiz (auto-évaluation)Quiz 4 — API, temps réel, interop

Quiz 4 — API, temps réel, interop

1. Que génère #[ApiResource] sur une entité ?

Réponse

Une API REST complète (CRUD, pagination, validation, doc OpenAPI) — automatiquement.

2. À quoi servent les groupes de sérialisation ?

Réponse

Contrôler les champs exposés en sortie (normalizationContext) et acceptés en entrée (denormalizationContext).

3. Quel danger avec #[ApiResource] sans groupes ?

Réponse

Over-exposure : exposer/laisser modifier tous les champs (hash, rôles) → fuite + mass assignment.

4. Que renvoie l’API sur une entrée invalide, et selon quel standard ?

Réponse

Un 422 avec les violations, au format RFC 7807 (application/problem+json).

5. Comment sécuriser une opération API avec un voter ?

Réponse

security: "is_granted('X', object)" sur l’opération.

6. Comment un utilisateur ne voit-il que ses ressources en collection ?

Réponse

Une extension de collection Doctrine (filtre SQL), pas un voter par item.

7. Pourquoi le CORS est-il nécessaire entre Next.js et l’API ?

Réponse

Origines différentes → le navigateur bloque sauf autorisation explicite (NelmioCors).

8. Comment obtenir des types TS alignés sur l’API ?

Réponse

Les générer depuis la spec OpenAPI (openapi-typescript).

9. Comment lit-on l’API dans un Server Component Next.js ?

Réponse

Un fetch côté serveur (Bearer depuis le cookie) avec next: { revalidate, tags }.

10. Comment rafraîchir les données après une mutation (Next.js) ?

Réponse

revalidateTag(...) (ou revalidatePath) dans la Server Action.

11. Que transporte-t-on dans un message Messenger async ?

Réponse

Des ids (pas des entités) ; le handler recharge l’entité fraîche.

12. Comment traite-t-on les messages async ?

Réponse

Un worker (messenger:consume), supervisé en production.

13. Pourquoi un handler doit-il être idempotent ?

Réponse

Un message peut être rejoué ; sinon double effet (crucial pour les paiements).

14. Où le Scheduler planifie-t-il les tâches ?

Réponse

Dans l’application (versionné/testable), via Messenger — pas dans le cron de l’OS.

15. Quel protocole Mercure utilise-t-il, et via quoi côté client ?

Réponse

SSE ; côté client, l’API EventSource.

16. Qu’est-ce qui confirme réellement un paiement Stripe ?

Réponse

Le webhook signé (checkout.session.completed), pas la redirection de succès.

17. Vérification indispensable sur un webhook ?

Réponse

La signature (constructEvent + secret) — sinon on accepte de faux événements.

18. Pourquoi ne pas se fier au code HTTP avec Moodle Web Services ?

Réponse

Moodle renvoie souvent 200 même en cas d’échec ; l’erreur est dans le corps.

19. Sur quels standards repose LTI 1.3 ?

Réponse

OIDC + JWT signés (JWKS). On utilise une bibliothèque (pas de crypto maison).

20. Quel service LTI renvoie une note dans Moodle ?

Réponse

AGS (Assignment and Grade Services).


Quiz suivant : Quiz 5 — Expert & carrière.