Dies erinnert mich an einen üblichen Dialog mit anderen: "Ich verstehe - ich stimme einfach nicht zu"
400 bedeutet, dass der Server nicht verstanden hat
200 bedeutet, dass der Server die Anfrage genau verstanden und vollständig verarbeitet hat.
Wenn ein Server 200 zurückgibt, sagt er: "Ich habe verstanden, wonach du fragst, habe es ohne unerwartete Fehler verarbeitet und hier ist meine angemessene Antwort"
200 bedeutet, dass du der Antwort im Response vertrauen kannst. Vielleicht lautet die Antwort "Römer nicht gestattet", aber dennoch ist es eine angemessene Antwort, generiert ohne unerwartete Probleme.
200 drückt keine Informationen über erwartete Fehler oder behandelte Ausnahmen aus - denn das ist kein Teil des Nachrichtentransportprozesses. Dies sind Statuscodes über HTTP, den Status des Transports selbst.
Ich bin der Meinung, dass die Unterscheidung zwischen "Transport/Kommunikation" und "Verarbeitung" vermieden werden sollte.
Für diejenigen, die bevorzugen, dass HTTP-Codes Probleme bei der Verarbeitung anzeigen (der Teil "Ich stimme nicht zu"), scheint 409 Conflict am ehesten auf "Römer nicht gestattet" zuzutreffen
RFC 7231 409 Conflict
Konflikt bedeutet im Grunde genommen "Fehlen einer Übereinkunft", oder?
Unabhängig davon, für welchen HTTP-Antwortcode du dich entscheidest, sind sich alle einig, dass deine Antwort erklären sollte, warum sie fehlgeschlagen ist, und was zu tun ist, um das Problem zu lösen. Im Fall von Römern könntest du vielleicht eine Liste akzeptabler Werte für das Feld zurückgeben?