Ich entwickle einen neuen Dienst in einer Mikrodienstumgebung. Dies ist ein REST-Service. Nehmen wir zur Vereinfachung an, der Pfad lautet: / historyBooks
Die POST-Methode für diesen Pfad erstellt ein neues Geschichtsbuch.
Nehmen wir an, dass ein Geschichtsbuch eine oder mehrere Epochen der Geschichte abdeckt.
Nehmen wir der Kürze halber an, wir haben nur die folgenden Epochen der Menschheitsgeschichte:
- Uralt
- Postklassik
- Modern
In meinem Code möchte ich sie in einem darstellen enum
.
Der Hauptteil der Methode (die Nutzdaten) liegt im JSON-Format vor und sollte einen Feldnamen enthalten eras
. Dieses Feld ist eine Liste von era
Werten, die in diesem Buch behandelt werden.
Der Körper kann aussehen wie:
{
"name": "From the cave to Einstein - a brief history review",
"author": "Foo Bar",
"eras": ["Ancient", "Post Classical", "Modern"]
}
In diesem speziellen Dienst lautet die Geschäftslogik:
Wenn in der Eingabe keine Epochen angegeben sind, wird davon ausgegangen, dass dieses Buch alle Epochen abdeckt .
In der API-Überprüfung wurde ein Vorschlag gemacht:
Fügen Sie ALL
für die Epochen-Aufzählung einen anderen Wert hinzu , um explizit anzugeben, dass alle Epochen abgedeckt sind.
Ich denke, es hat einige Vor- und Nachteile.
Vorteile:
Explizite Eingabe
Nachteile:
Wenn zwei Elemente in der Liste angegeben sind, sagen Sie ALL
und Ancient
- was wird aus der Anwendung entnommen? Ich denke, das ALL
sollte die anderen Werte überschreiben, aber das ist eine neue Geschäftslogik.
Wie würde ich Bücher darstellen, die alle Epochen abdecken, wenn ich eine Abfrage für Bücher durchführe, die bestimmte Epochen abdecken? Wenn ALL
auch für den Ausgang (mit der gleichen Logik) verwendet wird, dann ist es in der Verantwortung des Verbrauchers zu interpretieren ALL
wie ["Ancient", "Post Classical", "Modern"]
.
Meine Frage
Ich denke, dass das Neue ALL
mehr Verwirrung stiftet, als es überhaupt nicht zu haben.
Was denkst du? Würden Sie diesen ALL
Wert hinzufügen oder Ihre API ohne ihn behalten?