2012-11-26 2 views
14

Nehmen wir an, ich habe eine Ressource articles um /articles.Welcher HTTP-Code wird für eine leere Subresource in einer REST-API verwendet?

Diese Artikel können verwandte Artikel haben, also hole ich sie durch GETting /articles/{id}/related.

Was soll ich zurückgeben, gibt es keine verwandten Artikel?

ich mir vorstellen kann:

  • 404 Not Found, vielleicht mit einer leeren Sammlung
  • 204 No Content
  • 200 Found mit einer leeren Sammlung

Irgendwelche Tipps? (Bitte geben Sie Argumente)

Übrigens, es kann für die Seitenumbruch gelten. Wenn ich Seite 3 von 2 anfordere, gibt die Seite 3 einen leeren Satz zurück, sollte es ein 404 sein?

Antwort

6

würde ich nicht 404 verwenden -, dass der Kunde sagen würde: „Ich bin nicht in der Lage, Ihnen zu sagen, ob es irgendwelche releated Artikel“. Es wäre angemessen, wenn die gegebene {id} überhaupt nicht erkannt wird. Was Sie wollen, ist eine positive Antwort, um dem Kunden zu sagen, ja, gute Frage, und hier ist die (leere) Liste von verwandten Artikeln.

204 ist auch nicht gut, aus verwandten Gründen. Es hat angegeben, dass gibt es keine Antwort, die immer noch anders ist als eine Antwort, die ist gibt es aber zufällig die leere Liste sein. Seine Beschreibung ergibt für einen POST mehr Sinn als für einen GET.

200 mit einer leeren Liste ist genau richtig.

14

404 ist nicht das, was Sie suchen. Es ist ein Fehler Zustand. Ihr Fall ist kein Fehler. Der Kunde weiß derzeit nicht, ob es verwandte Artikel gibt und will es wissen. Das ist kein Fehler.

204 ist auch nicht geeignet. RFC 2616 heißt es:

The server has fulfilled the request but does not need to return an 
    entity-body, and might want to return updated metainformation. The 
    response MAY include new or updated metainformation in the form of 
    entity-headers, which if present SHOULD be associated with the 
    requested variant. 

204 nicht festgelegt, dass es keine verwandten Artikel. Es besagt nur, dass der Server die Daten nicht senden muss.

200 mit leere Sammlung auf der anderen Seite würde Ihren Bedarf erfüllen.

+0

200 ist eine gute Übereinstimmung, aber halten Sie sich von '200 Found' fern, da _302 Found_ bereits existiert. –

4

Geben Sie 200 mit einem leeren Array zurück.

Verwandte Themen