it-swarm.com.de

Was sind REST Ressourcen?

Was sind REST -Ressourcen und in welcher Beziehung stehen sie zu Ressourcennamen und Ressourcendarstellungen?

Ich habe einige Artikel zu diesem Thema gelesen, aber sie waren zu abstrakt und ließen mich verwirrter als zuvor.

Ist die folgende URL eine Ressource? Wenn ja, wie heißt diese Ressource und wie wird sie dargestellt?

http://api.example.com/users.json?length=2&offset=5

Die GET-Antwort der URL sollte ungefähr so ​​aussehen:

[
   {
      id: 6,
      name: "John"
   },
   {
      id: 7,
      name: "Jane"
   }
]
36
Emanuil Rusev

Was ist eine Ressource?

Eine Ressource ist alles, was wichtig genug ist, um als .__ referenziert zu werden. Ding an sich. Wenn Ihre Benutzer "einen Hypertext-Link erstellen möchten Um dies zu bestätigen oder zu widerlegen, rufen Sie ein .__ ab. Repräsentation davon, alle oder einen Teil davon durch Verweis in eine andere Darstellung, kommentieren Sie sie oder führen Sie andere Vorgänge an. es “, dann sollten Sie es zu einer Ressource machen.

Normalerweise kann eine Ressource auf einem Computer gespeichert werden und dargestellt als ein Bitstrom: ein Dokument, eine Zeile in einer Datenbank oder das Ergebnis der Ausführung eines Algorithmus. Eine Ressource kann eine physische .__ sein. Objekt wie ein Apple oder ein abstraktes Konzept wie Mut, aber (wie werden wir später sehen) müssen die Darstellungen solcher Ressourcen unbedingt sein enttäuschend. Hier sind einige mögliche Ressourcen:

  • Version 1.0.3 des Software-Releases
  • Die neueste Version der Software-Version
  • Der erste Weblog-Eintrag für den 24. Oktober 2006
  • Eine Straßenkarte von Little Rock, Arkansas
  • Einige Informationen zu Quallen
  • Ein Verzeichnis mit Ressourcen, die sich auf Quallen beziehen
  • Die nächste Primzahl nach 1024
  • Die nächsten fünf Primzahlen nach 1024
  • Die Verkaufszahlen für Q42004
  • Die Beziehung zwischen zwei Bekannten, Alice und Bob
  • Eine Liste der offenen Fehler in der Fehlerdatenbank

Der Text stammt aus dem O'Reilly-Buch " RESTful Web Services ".

22
Emanuil Rusev

Der Grund, warum Artikel zu REST -Ressourcen abstrakt sind, liegt darin, dass das Konzept einer REST -Ressource abstrakt ist. Es ist im Grunde "auf was auch immer durch die URL, die Sie angeben, zugegriffen wird" In Ihrem Beispiel wäre die Ressource also die Liste von zwei Benutzern, die bei Offset 5 in einer größeren Liste beginnen. Beachten Sie, dass die Implementierung der Ressource ein Detail ist, das Sie nicht interessieren, es sei denn, Sie schreiben die Implementierung. 

Ist die folgende URL eine Ressource?

Die URL ist keine Ressource, sondern eine Bezeichnung, die die Ressource identifiziert. Sie ist, wenn Sie möchten, der Name der Ressource.

Die JSON ist eine Darstellung der Ressource. 

34
JeremyP

Die URL ist niemals eine Ressource oder ihr Name oder ihre Darstellung.

URL gibt nur an, wo sich die Ressource befindet, und Sie können GET, POST, PUT, DELETE usw. für diese URL aufrufen, um die Ressource aufzurufen.

Zurückgesendete Daten sind die Ressourcen, während die Form der Daten deren Darstellung ist.

Angenommen, Ihre URL mit angegebenen GET-Parametern kann eine JSON-Ressource ausgeben. Dies ist die JSON-Darstellung dieser Ressource. Mit einem anderen Flag im GET könnte es mit den gleichen Daten in XML antworten - dies ist eine andere Darstellung derselben Ressource.

BEARBEITEN: Aufgrund der Kommentare zum OP und meiner Antwort füge ich weitere Erklärungen hinzu.

Auch der Ressourcenname wird als 'Skriptname' betrachtet, z. In diesem Fall ist es users.json, während dieser Ressourcenname selbst die Ressourcendarstellung selbst beschreibt. Beim Aufruf dieser Ressource erwarten wir, dass sich die Ressource in JSON befindet, während beim Aufruf von z. users.xml würden wir die Daten in XML erwarten.

  1. Wenn ich den Parameter offset in GET ändere, enthält die Antwort Unterschiedlicher Datensatz - handelt es sich um eine neue Ressource oder deren Darstellung?
  2. Wenn ich definiere, welche Spalten als Antwort in GET zurückgegeben werden, ist dies eine andere Ressource oder eine andere Darstellung, oder?
  1. Nun, hier ist das Problem und die Antwort klar - wir rufen immer noch dieselbe URL auf, der Server antwortet mit den Daten in derselben Form (immer noch JSON), die Daten enthalten immer noch Informationen über Benutzer - nur die Informationen selbst haben sich aufgrund der Änderungen verändert neuer Versatzparameter. Es ist also offensichtlich, dass es ist immer noch dieselbe Ressource mit derselben Darstellung und demselben Ressourcennamen wie zuvor .
  2. Das zweite Problem könnte etwas verwirrend sein. Obwohl wir dieselbe Ressource aufrufen, obwohl die Ressource die gleichen Daten enthält (nur mit vordefinierten Spaltengruppen) und obwohl die Daten in derselben Repräsentation sind, könnte dies uns als eine andere Ressource erscheinen. Aufgrund der Punkte im obigen Absatz handelt es sich jedoch weder um eine andere Ressource noch um eine andere Darstellung. Obwohl der Datensatz weniger Informationen enthält, sollte die anfragende Seite (das Filtern dieses Datensatzes) dies berücksichtigen und sich entsprechend verhalten. Also nochmal: es ist dieselbe Ressource mit demselben Ressourcennamen und derselben Ressourcendarstellung .
13
shadyyx

Was sind REST -Ressourcen und in welcher Beziehung stehen sie zu Ressourcennamen und Ressourcendarstellungen?

REST bedeutet nicht viel mehr, als Sie HTTP-Verben (GET, POST, PUT, DELETE usw.) ordnungsgemäß verwenden.

Ist die folgende URL eine Ressource?

Alle URLs sind Zeichenfolgen, die Computern mitteilen, wo sich eine Ressource befinden kann. (Daher der Name: Uniform Resource Locator).

11
Quentin

REST

Dieser Baustil wurde in der Kapitel 5 der Dissertation von Roy T. Fielding definiert.

Bei REST geht es um die Manipulation des Ressourcenzustands durch ihre Darstellungen auf der Oberseite der zustandslosen Kommunikation zwischen Client und Server. Es handelt sich um einen protokollunabhängigen Architekturstil, der in der Praxis jedoch häufig über dem HTTP-Protokoll implementiert wird.

Ressourcen

Die Ressource selbst ist eine Abstraktion, und in den Worten des Autors kann eine Ressource jede Information sein , die benannt werden kann . Die Domänenentitäten einer Anwendung (z. B. eine Person, ein Benutzer, eine Rechnung, eine Sammlung von Rechnungen usw.) können Ressourcen sein. Siehe folgendes Zitat aus der Dissertation von Fielding:

5.2.1.1 Ressourcen und Ressourcenkennungen

Die Schlüsselabstraktion von Informationen in REST ist eine Ressource . Jede Information, die benannt werden kann, kann eine Ressource sein: ein Dokument oder ein Bild, eine temporäre Service (z. B. "heutiges Wetter in Los Angeles"), eine Sammlung anderer Ressourcen, ein nicht virtuelles Objekt (z. B. eine Person) usw. Mit anderen Worten, jedes Konzept, das das Ziel eines Hypertextverweises eines Autors sein könnte, muss Anpassung an die Definition einer Ressource: Eine Ressource ist eine konzeptionelle Zuordnung zu einer Gruppe von Entitäten, nicht zu der Entität, die der Zuordnung zu einem bestimmten Zeitpunkt entspricht.

Genauer gesagt ist eine Ressource [~ # ~] r [~ # ~] eine zeitlich variierende Zugehörigkeitsfunktion MR(t) , das für die Zeit t einer Menge von Entitäten oder äquivalenten Werten zugeordnet wird. Die Werte in der Menge können Ressourcendarstellungen und/oder Ressourcenkennungen sein. [...]

Ressourcendarstellungen

Ein JSON-Dokument ist eine Ressourcendarstellung , mit der Sie den Status einer Ressource darstellen können. Ein Server kann verschiedene Darstellungen für dieselbe Ressource bereitstellen. Zum Beispiel mit XML- und JSON-Dokumenten. Ein Client kann die Inhaltsaushandlung verwenden , um verschiedene Darstellungen derselben Ressource anzufordern.

Zitiert die Dissertation von Fielding:

5.2.1.2 Darstellungen

REST-Komponenten führen Aktionen für eine Ressource aus, indem sie mithilfe einer Repräsentation den aktuellen oder beabsichtigten Status dieser Ressource erfassen und diese Repräsentation zwischen Komponenten übertragen. Eine Repräsentation ist eine Folge von Bytes plus Repräsentationsmetadaten zur Beschreibung dieser Bytes. Andere häufig verwendete, aber weniger genaue Namen für eine Darstellung sind: Dokument, Datei und HTTP-Nachrichtenentität, -instanz oder -variante.

Eine Repräsentation besteht aus Daten, Metadaten, die die Daten beschreiben, und gelegentlich aus Metadaten, um die Metadaten zu beschreiben (normalerweise zum Überprüfen der Nachrichtenintegrität). Metadaten liegen in Form von Name-Wert-Paaren vor, wobei der Name einem Standard entspricht, der die Struktur und Semantik des Werts definiert. Antwortnachrichten können sowohl Repräsentationsmetadaten als auch Ressourcenmetadaten enthalten: Informationen zu der Ressource, die nicht spezifisch für die bereitgestellte Repräsentation sind. [...]

Über HTTP können Anforderungs- und Antwortheader verwendet werden, um Metadaten zur Darstellung auszutauschen.

Ressourcenkennungen

Eine URL, eine Ressourcenkennung , die eine Ressource auf dem Server identifiziert/lokalisiert.


Dies Antwort kann auch aufschlussreich sein.

7
cassiomolin

Eine Ressource ist:

  • ein Substantiv
  • das ist einzigartig
  • und kann als Daten dargestellt werden
  • und hat mindestens eine URI

Ich gehe auf meinen Blogbeitrag näher ein. Was genau ist eine RESTful-Ressource?

6
techiferous

Representational State Transfer (REST) ​​ist ein Stil einer Softwarearchitektur für verteilte Systeme wie das World Wide Web. REST-Architekturen bestehen aus Clients und Servern. Clients initiieren Anfragen an Server. Server verarbeiten Anforderungen und geben entsprechende Antworten zurück. Anfragen und Antworten basieren auf der Übertragung von Ressourcenrepräsentationen. Ressourcen sind eine Reihe von adressierbaren Objekten, im Wesentlichen Dateien und Dokumente, die über URLs verknüpft sind. Wie oben richtig von Quentin ausgeführt, impliziert die Architektur von REST lediglich, dass Sie die HTTP-Verben GET/POST/PUT/DELETE verwenden würden. 

4
verisimilitude

Konzeptionell können Sie sich eine Ressource als alles vorstellen, was im Web über eine URL erreichbar ist. Wenn Sie sich an diese Regel halten, kann http://api.example.com/users.json?length=2&offset=5 als Ressource betrachtet werden

4

Sie haben nur scheinbar relative Parameter angegeben und nicht "ID", die konkret ist (oder sein sollte). Denken Sie daran, dass Get-Operationen idempotent sein sollten (d. H. Mit demselben Ergebnis wiederholbar).

2
Jeff Watkins

Was ist REST?

REST ist ein Architekturstil, der für Representational (RE) State (S) transfer (T) steht.

Was ist REST Ressource?

Restressource sind Daten, für die Operationen ausgeführt werden sollen. Diese Daten können in der Datenbank als Datensatz (e) der Tabelle (n) oder in einer anderen Form vorliegen. Dieser Datensatz hat eine eindeutige Kennung, mit der er identifiziert werden kann wie id für Mitarbeiter.

Wenn diese Daten nun von einer eindeutigen URL wie http://www.example.com/employees/123,so angefordert werden, werden schließlich die in der Datenbank vorhandenen Daten oder Datensätze in das Format JSON/XML/Plain Text konvertiert Rest Service und wird an Consumer gesendet.

Im Grunde ist hier REPRESENTATIONAL STATE TRANSFER so, dass der Status der in der Datenbank vorhandenen Daten in ein anderes Format übertragen wird, das JSON/XML oder Klartext sein kann.

In diesem Fall stellt 1 Mitarbeiter 1 Ressource dar, auf die über eine eindeutige URL zugegriffen werden kann, z. B. http://www.example.com/employees/123

Für den Fall, dass wir eine Liste aller Ressourcen (Mitarbeiter) erhalten möchten, werden wir Folgendes tun: http://www.example.com/employees

Hoffe das wird helfen.

0
user2603985