Je développe un nouveau service dans un environnement de micro-services. Il s'agit d'un service REST. Pour simplifier, disons que le chemin est: / historyBooks
Et la méthode POST pour ce chemin crée un nouveau livre d'histoire.
Supposons qu'un livre d'histoire couvre une ou plusieurs époques de l'histoire.
Par souci de concision, supposons que nous n'avons que les époques suivantes de l'histoire humaine:
- Ancien
- Post Classique
- Moderne
Dans mon code, je voudrais les représenter dans un enum
.
Le corps de la méthode (la charge utile) est au format JSON et doit inclure un nom de champ eras
. Ce champ est une liste de era
valeurs que ce livre couvre.
Le corps peut ressembler à:
{
"name": "From the cave to Einstein - a brief history review",
"author": "Foo Bar",
"eras": ["Ancient", "Post Classical", "Modern"]
}
Dans ce service spécifique, la logique métier est la suivante:
si aucune ère n'est fournie dans l'entrée, ce livre est considéré comme couvrant toutes les époques.
Lors de l'examen de l'API, une suggestion a été faite:
inclure une autre valeur, ALL
pour l'énumération des époques, pour indiquer explicitement que toutes les époques sont couvertes.
Je pense qu'il a des avantages et des inconvénients.
Avantages:
Entrée explicite
Les inconvénients:
Si deux éléments de la liste sont fournis, dites ALL
et Ancient
- que retiendra-t-on de la demande? Je suppose que cela ALL
devrait remplacer les autres valeurs, mais c'est une nouvelle logique métier.
Si je lance une requête, pour les livres qui couvrent des époques spécifiques, comment représenter un livre qui couvre toutes les époques? Si ALL
est également utilisé pour la sortie (en utilisant la même logique), il est de la responsabilité du consommateur d'interpréter ALL
comme ["Ancient", "Post Classical", "Modern"]
.
Ma question
Je pense qu'avoir le nouveau ALL
cause plus de confusion que ne pas l'avoir du tout.
Qu'est-ce que tu penses? Souhaitez-vous ajouter cette ALL
valeur ou conserver votre API sans elle?