Frage

Mein REST API gibt JSON.

Ich bin der Rückkehr zur Zeit text / plain als MIME-Typ, aber es fühlt sich komisch an. Soll ich application/x-javascript oder eine andere Art zurückkommen?

Die zweite Frage ist in Bezug auf den HTTP-Statuscode für Fehlerbedingungen. Wenn mein REST API einen Fehlerzustand zurückkehrt, ich als JSON kehre zurück

{ result: "fail", errorcode: 1024, errormesg: "That sucked. Try again!" }

Sollte der HTTP-Statuscode bleibt bei 200 OK?

War es hilfreich?

Lösung

Die JSON spec schlägt application/json, und das scheint durch die IETF und IANA Registrierung.

Auf die zweite Frage, denke ich, wenn die Nachrichtenbehandlung in irgendeiner Weise versagt Sie eine strukturierte und Standardfehlerantwort als JSON-Nachricht zurückgeben sollte; nur dann, wenn ein Fehler ist, die Nachricht an den Backend-Handler aus irgendeinem Grunde sollten Sie einen HTTP-Fehlercode prüfen zu liefern.

Aktualisieren 2014.06.27 : Die Zeiten, in denen Clients (Browser) nur mit einer 200 Antwort gearbeitet, sind längst vorbei und die vorherrschende Beratung für RESTful APIs ist, um HTTP-Response-Codes geeignet für die Antwort zu verwenden , 2xx für erfolgreiche Antworten (zB 201 für PUT erstellt; 204 No Content für DELETE). und 4xx und 5xx für alle Fehlerbedingungen, einschließlich der von der API selbst

Andere Tipps

Ich ziehe es sowohl mit einem HTTP-Fehlerstatus und anwendungsspezifische Nutzlast antworten kann.

Nein, sollten Sie nicht mehr als 200 in einem Fehlerzustand zurück.

Es ist in Ordnung, den Statuscode zu wiederholen, oder eine detailliertere Fehlercode in dem Antwort-Payload enthalten.

Die richtige Content-type zurückzukehren application/json nach RFC 4627 , die auch den MIME-Register Typ IANA (und in der Tat, es zeigt auf IANA Seite nach oben). Natürlich, wenn Sie einen Client schreiben, würden Sie in liberaler sein, was Sie akzeptieren, und auch andere wie text/json und text/x-json akzeptieren.

Nun, wenn es einen Fehler gibt, sollten Sie nicht zurück HTTP 200, das ist im Grunde nicht-RESTful. Ich weiß, dass manchmal gibt es keine genaue Übereinstimmung für Ihre Fehler, aber wählen Sie die nächstgelegene 4XX- (Client-Fehler) oder 5XX (Serverfehler) Fehler in RFC 2616 Sections 10.4 -10,5, und genauer gesagt im JSON.

Wenn von „REST API“ Sie meinen, dass Sie eine REST-Architektur dann den Medientyp folgen wollen wird durch die Funktionalität, die Sie über die REST-API verfügbar machen möchten bestimmt verwenden. Wollen Sie neue Objekte erstellen können? Abfrage einer Liste von Objekten? Bearbeiten Sie ein Objekt? Wenn ja, dann könnte ein guter RESTful Medientyp zu verwenden seine vnd.collection + json, weil es eine Hypertext verknüpft Schnittstelle definiert eine Sammlung von JSON-Objekten zu manipulieren.

Hinweis: Ein RESTful API den Medientyp application / json, aber dieser Medientyp nicht über einen Hypertext verknüpft RESTful-Schnittstelle verwenden könnte, so wäre es ein Endpunkt in der Zustandsänderung sein.

Es ist auch völlig akzeptabel, eine Web-API-Architektur zu folgen, wo HTTP RPC-Aufrufe application / json Objekte zurückgeben und andere HTTP-RPC-Aufrufe diese Objekte zu manipulieren, und es gibt keinen Hypertext-Link-Schnittstelle für die Nutzung und die Navigation der Zustandsänderungen. Aber dies ist nicht Rest.

Ich mag diese Beschreibung von REST (vom Schöpfer von REST):

REST APIS muss Hypertext gefahren werden

  

Mit anderen Worten, wenn der Motor des Anwendungszustandes (und damit die API)   wird nicht durch Hypertext angetrieben wird, dann kann es nicht RESTful sein und kann nicht   werden, um eine REST API. Period.

Auch aus der Diskussion dieses Beitrags ist dieses Beispiel für eine RESTful Anwendung: verloren boys Spam-E REST Anwendung

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top