Rozwijam nową usługę w środowisku mikrousług. To jest usługa REST. Dla uproszczenia załóżmy, że ścieżka to: / historyBooks
A metoda POST dla tej ścieżki tworzy nowy podręcznik historii.
Załóżmy, że książka historyczna obejmuje jedną lub więcej epok w historii.
Dla zwięzłości załóżmy, że mamy tylko następujące epoki ludzkiej historii:
- Starożytny
- Post Klasyczny
- Nowoczesny
W moim kodzie chciałbym przedstawić je w pliku enum
.
Treść metody (ładunek) ma format JSON i powinna zawierać nazwę pola eras
. To pole zawiera listę era
wartości, które obejmuje ta książka.
Ciało może wyglądać następująco:
{
"name": "From the cave to Einstein - a brief history review",
"author": "Foo Bar",
"eras": ["Ancient", "Post Classical", "Modern"]
}
W tej konkretnej usłudze logika biznesowa jest następująca:
jeśli w danych wejściowych nie podano żadnych epok, uznaje się, że książka obejmuje wszystkie epoki.
W przeglądzie API pojawiła się sugestia:
Dołącz inną wartość, ALL
dla wyliczenia czasów, aby wyraźnie wskazać, że wszystkie czasy są objęte.
Myślę, że ma to wady i zalety.
Plusy:
Jawne dane wejściowe
Cons:
Jeśli podane są dwie pozycje na liście, powiedz ALL
i Ancient
- co zostanie pobrane z aplikacji? Myślę, że to ALL
powinno zastąpić inne wartości, ale to nowa logika biznesowa.
Jeśli uruchomię zapytanie dotyczące książek z konkretnej epoki, w jaki sposób przedstawiłbym książki obejmujące wszystkie epoki? Jeśli ALL
jest również używany dla danych wyjściowych (przy użyciu tej samej logiki), wówczas obowiązkiem konsumenta jest interpretowanie ALL
jako ["Ancient", "Post Classical", "Modern"]
.
Moje pytanie
Myślę, że posiadanie nowych ALL
powoduje więcej zamieszania niż wcale.
Co myślisz? Czy dodałbyś tę ALL
wartość, czy zachowałbyś swój API bez niej?