Aller au contenu
Filtrer les règles par style d’implémentation
Style
Les deux styles
Sévérité
majeure
S’applique à
  • Adapters driving

API-01 · Le modèle du domaine ne s’expose pas tel quel en REST ​

Style
Les deux styles
Sévérité
majeure
S’applique à
  • Adapters driving

Signal ​

  • Un controller qui renvoie directement un aggregate ou une entity sérialisés, ou qui reçoit des objets du domaine dans le corps de la requête.
  • Des decorators de sérialisation ou de documentation de l’API (class-transformer, Swagger) posés sur des classes du domaine.

Pourquoi ​

Quand l’API expose le modèle du domaine, chaque changement du modèle atteint l’API, même quand l’extérieur n’en a que faire. Il peut casser les clients.

Utiliser un modèle d’API à part, conçu autour des use cases. Chaque ressource se construit à partir d’un ou de plusieurs aggregates. On décide alors, au cas par cas, si un changement du domaine se voit dans l’API.

Exceptions ​

Une API construite autour d’un media type standard, où un modèle représente le format lui-même. On est alors proche d’un shared kernel ou d’un published language.

Correction ​

Des représentations propres à l’API, dans driving/http, construites par le controller à partir de la view que renvoie une query ou du résultat d’une command : driving n’importe jamais domain. Si l’API sert d’autres bounded contexts, son contrat va dans public (PUB-01).

Voir aussi ​

PUB-01 vise le langage publié aux autres bounded contexts. API-01 s’applique à toute API REST, y compris celle qui sert l’interface.