Wie werden REST-Ausnahmen behandelt?

8

Wir sind gerade dabei, eine Diskussion darüber zu führen, wie man mit REST-Ausnahmen umgehen soll.

Antwort Inhaltstyp: JSON

Zwei Lösungen, die wir haben:

  1. Wirf alle unkontrollierten Ausnahmen als JSON-Antwort ab.
  2. Anfrage senden ungültiger Antwortcode.

Argumente:

  • Wenn es ein Fehler ist, warum JSON zurückgeben? Senden Sie einfach einen ungültigen Antwortcode.

Gegenargument:

  • Der Antwortcode ist zu technisch für normale Entwickler.

Was sagen Sie?

    
Vanchinathan Chandrasekaran 25.06.2010, 21:34
quelle

2 Antworten

13

Für eine JSON API, die ich kürzlich entwickelt habe, mache ich beides. Ich antworte immer mit gültigem JSON (naja, vorausgesetzt, ich antworte überhaupt). Wenn ich eine ungültige Anfrage feststelle, benutze ich den Status 400. Wenn ich einen Serverfehler feststelle (den ich nicht glaube, dass er durch eine ungültige Anfrage verursacht wurde), verwende ich einen 5xx-Status. Das JSON-Objekt enthält einen speziellen Schlüssel, der nur für Fehler mit einem Zeichenfolgenwert festgelegt ist.

Ich denke, das ist eine gute Lösung, die die REST-Prinzipien respektiert und auf mehrere Arten verwendet werden kann. Die gleiche Lösung wird von einigen anderen JSON-APIs wie Yahoo Search verwendet. Versuchen Sie Ссылка .

    
Matthew Flaschen 25.06.2010, 21:46
quelle
5

Verwenden Sie Fehlercodes wie für HTTP. Also 50 * für irgendeine Ausnahme wegen eines internen Problems. Und 40 * für schlechte Argumente. Vermeiden Sie so weit wie möglich Ihre eigenen definierten Codes. Die Idee ist eine "einheitliche" Schnittstelle.

Im Allgemeinen. 204 für den Erfolg, ohne irgendwelche Inhalte zu senden 200 für den Erfolg mit einer JSON-Darstellung der Ressource Und wenn es keine erfolgreiche Operation ist, geben Sie den entsprechenden Antwortcode zurück. Sie können optional auswählen, dass ein JSON zurückgegeben werden soll. Um die Dinge zu vereinfachen, können Sie ein gemeinsames Format (json) für alle Fehlerreaktionen haben.

Ссылка muss gelesen werden, bevor Sie Ihre API-Spezifikationen einfrieren.

    
neal aise 25.06.2010 22:07
quelle

Tags und Links