Ich entwerfe eine RESTful-API und stelle mich dem Titelproblem, das der Klarheit halber neu formuliert wurde:
Sollte ich schnell scheitern, wenn ein Client einen nicht erkannten Parameter sendet? Beispielsweise,
http://example.com/api/foo?bar=true&paula=bean
Dies bar
ist ein gültiger Parameter, der jedoch paula
nicht von der API angegeben wird. Sollte ich
- Warnen Sie den Client vor dem Fehler
- Scheitern Sie schnell
- Ignoriere es
Wenn ich den Client warne, kann ich nur für den ersten Parameter eine Warnung ausgeben, da er möglicherweise eine nahezu unendliche Anzahl davon sendet und der Server vermutlich bessere Dinge zu tun hat. Wenn dies fehlschlägt, wird nur der erste ungültige Parameter als Problem angegeben.
Ich bevorzuge die Ablehnung einer Warnung, um den Programmierer zum Handeln zu zwingen, da er das Problem sonst ignorieren und weiterhin Ressourcen verschwenden oder sich versehentlich selbst frachten könnte. Nichts zu tun ist in dieser Hinsicht noch schlimmer.
Sind meine Argumente sinnvoll? Gibt es eine akzeptierte Praxis für solche Dinge?
quelle
api/v1
usw. würde dies erledigen, aber es sind weiterhin keine inkrementellen Aktualisierungen möglich. +1Antworten:
Meiner Meinung nach sollten Sie einen ungültigen Anforderungsstatus zurückgeben, damit der Client weiß, dass das, was er versucht, nicht gültig ist. Meine Meinung zu diesem Thema wird durch das Konzept beeinflusst , dass RESTful APIs sind auffindbar . Wenn Sie im Vorfeld ausreichend Informationen bereitstellen, versucht der Client nie, zunächst eine ungültige Anforderung zu stellen. Wenn dies der Fall ist, liegt ein Fehler im Client-Code vor, und ein schneller Fehler macht den zweiten auf diesen Fehler aufmerksam. Natürlich ist das ein sehr puristischer Ansatz und möglicherweise nicht zu empfehlen, wenn Ihre API nicht erkennbar ist.
Ein pragmatischerer Ansatz könnte darin bestehen, die ungültigen Parameter zu ignorieren. In beiden Fällen sollten Sie jedoch sicherstellen, dass Sie das Verhalten gut dokumentieren.
quelle
Wenn Sie eine öffentliche API (oder eine API, die von einem anderen Team verwendet wird) verwenden, würde ich einen Rückgabefehler empfehlen, wie von @RubberDuck vorgeschlagen.
Wenn Ihre API nur innerhalb Ihres Teams (oder nur von Ihnen selbst) konsumiert wird, ist es möglicherweise einfacher, zusätzliche Felder zu ignorieren (z. B. erfordert weniger Code und ist einfacher zu tun).
quelle