In einer HATEOAS-API werden Links zurückgegeben, die mögliche Zustandsübergänge darstellen. Ein konformer Client sollte nur diese Links abrufen und befolgen. Wenn jedoch ein nicht konformer Client URIs erstellt, anstatt den angegebenen Links zu folgen, welcher Statuscode / welche Antwort ist am besten geeignet, um zurückzukehren?
- 400 würde funktionieren, zusammen mit einigen Informationen im Antworttext - das ist, was wir derzeit tun
- 403 Ich denke, das wäre falsch, da dies impliziert, dass die Anfrage niemals funktionieren könnte - aber möglicherweise ist der Link in Zukunft verfügbar
- 404 klingt plausibel - zu diesem Zeitpunkt existiert die Ressource nicht
Was denken die Leute? Ich weiß, dass bedingte Anforderungen Anforderungen verarbeiten können, die auf veralteten Antworten basieren (was z. B. 412 Sekunden ergibt), aber dies ist eine etwas andere Situation.
Aktualisieren:
OK, ich sehe jetzt, dass die richtige Antwort für diese Arten von ungültigen Vorgängen eine 404 wäre. Wie wäre es, wenn die Syntax einer Anfrage korrekt ist, sie zu einer gültigen Ressource geht, aber irgendwie gegen eine Geschäftsregel verstößt. Hier sind einige erfundene Beispiele:
- Angenommen, der Client kann zwei Zahlen angeben, die innerhalb von 20% voneinander liegen müssen, andernfalls kann es sich um eine beliebige Zahl handeln.
- Angenommen, der Client kann eine Nummer angeben, die eine Berechnung durchläuft, deren Ergebnis darauf hinweist, dass die ursprünglich angegebene Nummer falsch war.
Ist 400 die richtige Antwort für diese?