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ù epoche della storia.
Per brevità, supponiamo di avere solo le seguenti epoche della storia umana:
- Antico
- Post classica
- Moderno
Nel mio codice, vorrei rappresentarli in un enum
.
Il corpo del metodo (il payload) è in formato JSON e dovrebbe includere un nome campo eras
. Questo campo è un elenco di era
valori trattati da questo libro.
Il corpo può apparire come:
{
"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 sono state fornite epoche nell'input, questo libro è considerato per coprire tutte le epoche.
Nella revisione dell'API è stato formulato un suggerimento:
includere un altro valore ALL
, per l'era delle epoche, per indicare esplicitamente che tutte le epoche sono coperte.
Penso che abbia alcuni pro e contro.
Professionisti:
Input esplicito
Contro:
Se vengono forniti due elementi nell'elenco, dire ALL
e Ancient
- cosa verrà preso dall'applicazione? Immagino che ALL
dovrebbe prevalere sugli altri valori, ma questa è una nuova logica aziendale.
Se eseguo una query, per i libri che trattano epoche specifiche, come rappresenterei i libri che coprono tutte le epoche? Se ALL
viene utilizzato anche 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.
Cosa ne pensi? Aggiungeresti questo ALL
valore o manterrai la tua API senza di essa?