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?