4 Stimmen

Warum ist die Flickr-API nicht RESTful?

Ich bin dabei, eine REST-API für die Website eines Kunden zu entwickeln, und ich habe einige Nachforschungen angestellt. Ich stieß auf diese nützliche Frage über den Goldstandard für APIs.

Bevor ich diesen Beitrag gelesen habe, hatte ich daran gedacht, die Flickr-API als Referenz zu verwenden. Dieser Kommentar zur obigen Frage hat mich jedoch zum Nachdenken gebracht:

The Flickr API is particularly hilarious, for example. It advertises itself as RESTful and yet is nothing of the sort! - NathanE

Ich bin besonders daran interessiert, was die Flickr-API nicht RESTful macht und welche Auswirkungen diese nicht RESTful Elemente haben.

6voto

Mike Punkte 3332

Ein weiterer wichtiger Grund, warum diese API als nicht RESTful angesehen wird, ist, dass sie keinen "Hypertext" verwendet. Hypertext ist einfach die Verwendung von Links (und Link-Relationen), um Kunden in Ihren Anwendungen weiterzuleiten, anstatt von ihnen zu verlangen, einen URI programmatisch zu "konstruieren".

Dies ist nicht RESTful:

GET /Kollektion
200 OK

<collection>
  <item>
    <id>1</id>
  </item>
</collection>

Dies ist RESTful:

GET /Kollektion
200 OK

<collection>
  <item href="http://stackoverflow.com/collection/1" />
</collection>

Der Vorteil des letzteren, des RESTful-Ansatzes, ist, dass Ihr Server die Elementressource an einen beliebigen Ort verschieben kann - z. B. nach /item/1 -, den href-Wert ändern kann und weiß, dass alle Clients die Änderung übernehmen. Der erste Ansatz ist dazu nicht in der Lage, weil der Server nicht garantieren kann, dass alle Clients die Änderung anerkennen; dies ist Teil dessen, was als Client/Server-Kopplung bezeichnet wird, und in großen verteilten Systemen, in denen Ihre API viele Clients hat, möchten Sie dies auf ein Minimum beschränken - dies ist das Hauptziel von REST.

Roy Fielding bezeichnet diesen Teil von REST als "Hypertext Constraint" und schrieb den folgenden Blogbeitrag darüber:

http://roy.gbiv.com/untangled/2008/rest-apis-must-be-hypertext-driven

4voto

deamon Punkte 83176

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X