Sto sviluppando un nuovo servizio in un ambiente di micro-servizi. Questo è un servizio REST. Per semplicità, diciamo che il percorso è: / HistoryBooks
E il metodo POST per questo percorso crea un nuovo libro di storia.
Supponiamo che un libro di storia copra una o più ere nella storia.
Per brevità, supponiamo di avere solo le seguenti ere della storia umana:
- Antico
- Post classico
- Moderna
Nel mio codice, mi piacerebbe rappresentarli in un enum .
Il corpo del metodo (il payload) è in formato JSON e dovrebbe includere un nome di campo eras . Questo campo è un elenco di valori di era , che copre questo libro.
Il corpo può avere il seguente aspetto:
{
"name": "From the cave to Einstein - a brief history review",
"author": "Foo Bar",
"eras": ["Ancient", "Post Classical", "Modern"]
}
In questo servizio specifico, la logica aziendale è:
Se non ci sono ere fornite nell'input, questo libro è considerato per coprire le tutte ere.
Nella revisione dell'API, è stato presentato un suggerimento:
Includere un altro valore, ALL , per l'ena di ena, per indicare esplicitamente che tutte le ere sono coperte.
Penso che abbia alcuni pro e contro.
Pro:
Input esplicito
Contro:
Se vengono forniti due elementi nell'elenco, ad esempio ALL e Ancient : quale sarà il risultato dell'applicazione? Immagino che ALL debba sostituire gli altri valori, ma questa è una nuova logica aziendale.
Se eseguo una query, per i libri che coprono periodi specifici, come potrei rappresentare un libro che copre tutte le ere? Se anche ALL viene utilizzato per l'output (utilizzando la stessa logica), è responsabilità del consumatore interpretare ALL come ["Ancient", "Post Classical", "Modern"] .
La mia domanda
Penso che avere il nuovo ALL causi più confusione che non averlo affatto.
Che ne pensi? Vuoi aggiungere questo valore di ALL o mantenere la tua API senza di essa?