Angenommen, ich habe einen REST-Endpunkt, der eine Ganzzahl als Parameter verwendet:
/makeWaffles?numberOfWaffles=3
In diesem Fall möchte ich, dass die Zahl positiv ist, da ich keine negative Anzahl von Waffeln herstellen kann (und das Anfordern von 0 Waffeln ist Zeitverschwendung). Ich möchte also jede Anfrage ablehnen, die keine positive Ganzzahl enthält. Ich möchte auch eine Anfrage ablehnen, die eine maximale Ganzzahl überschreitet (sagen wir mal, es ist MAX_INTEGER).
Soll ich für den Fall, dass jemand eine nicht positive Anzahl von Waffeln anfordert, einen HTTP 400-Status (Bad Request) zurückgeben? Mein erster Gedanke ist ja: Es ist keine gültige Nummer für mich, um die Anfrage abzuschließen. Der RFC nennt jedoch keine Geschäftsregeln als Grund, es zu werfen:
Der Statuscode 400 (Bad Request) gibt an, dass der Server die Anforderung aufgrund eines als Clientfehler wahrgenommenen Problems (z. B. fehlerhafte Anforderungssyntax, ungültige Anforderungsnachrichten oder irreführendes Anforderungsrouting) nicht verarbeiten kann oder wird.
Eine Geschäftsregel fällt nicht unter eines dieser drei Beispiele. Es ist syntaktisch korrekt, richtig eingerahmt und täuscht nicht über das Weiterleiten von Anforderungen.
Soll ich also einen HTTP 400-Status (Bad Request) zurückgeben, wenn ein Parameter syntaktisch korrekt ist, aber eine Geschäftsregel verletzt? Oder gibt es einen angemesseneren Status für die Rückgabe?