Was ist der Unterschied zwischen Ressource und Endpunkt?

139

Ich habe gehört, dass sowohl "Ressource" als auch "Endpunkt" sich auf dasselbe beziehen. Es scheint, dass Ressource ein neuerer Begriff ist.

Was ist der Unterschied zwischen ihnen? Bedeutet "Ressource" ein RESTful-Design?

B Sieben
quelle

Antworten:

107

SICH AUSRUHEN

Ressource ist eine RESTful-Teilmenge von Endpoint .

Ein Endpunkt an sich ist der Ort, an dem auf einen Dienst zugegriffen werden kann:

https://www.google.com    # Serves HTML
8.8.8.8                   # Serves DNS
/services/service.asmx    # Serves an ASP.NET Web Service

Eine Ressource bezieht sich auf ein oder mehrere Substantive, die in namengebundenen Darstellungen dargestellt werden, da es für Menschen leicht zu verstehen ist:

/api/users/johnny         # Look up johnny from a users collection.
/v2/books/1234            # Get book with ID 1234 in API v2 schema.

Alle oben genannten Punkte könnten als Service-Endpunkte betrachtet werden, aber nur die unterste Gruppe würde im wahrsten Sinne des Wortes als Ressourcen betrachtet. Die oberste Gruppe äußert sich nicht zum Inhalt.

Eine REST-Anforderung ist wie ein Satz, der aus Substantiven (Ressourcen) und Verben (HTTP-Methoden) besteht:

  • GET(Methode) der benannte Benutzer johnny(Ressource).
  • DELETE(Methode) das Buch mit ID 1234(Ressource).

Nicht-REST

Endpunkt bezieht sich normalerweise auf einen Dienst, aber eine Ressource kann viele Dinge bedeuten. Hier sind einige Beispiele für Ressourcen, die von dem Kontext abhängen, in dem sie verwendet werden.

URL: Einheitlicher "Resource" Locator

  • Könnte RESTful sein, ist es aber oft nicht. In diesem Fall ist der Endpunkt fast synonym.

Resourcenmanagement

Wörterbuch

  • Die Definitionen bieten viel mehr Verwendungsmöglichkeiten des Wortes.

Etwas, das Ihnen helfen kann:

Die Bibliothek war eine wertvolle Ressource, die er häufig nutzte.

Ressourcen sind natürliche Substanzen wie Wasser und Holz, die für die Unterstützung des Lebens wertvoll sind:

[pl] Die Erde hat begrenzte Ressourcen, und wenn wir sie nicht recyceln, verbrauchen wir sie.

Ressourcen sind auch wertvolle Dinge wie Geld oder Besitztümer, die Sie verwenden können, wenn Sie sie benötigen:

[pl] Die Regierung verfügt nicht über die Ressourcen, um die Anzahl der benötigten Lehrer einzustellen.


Die Moral

Der Begriff Ressource hat per Definition viele Nuancen. Es hängt alles vom Kontext ab, in dem es verwendet wird.

Kammerherr
quelle
1
Ich vermutete dasselbe. Haben Sie Referenzen gesehen, die dies erklären oder dokumentieren?
B Seven
Es wurden einige Links hinzugefügt, die ein Gefühl für jeden der Begriffe vermitteln.
Cchamberlain
84

Die Begriffe Ressource und Endpunkt werden häufig synonym verwendet. Tatsächlich bedeuten sie aber nicht dasselbe.

Der Begriff Endpunkt konzentriert sich auf die URL , über die eine Anfrage gestellt wird.
Der Begriff Ressource konzentriert sich auf den Datensatz , der von einer Anforderung zurückgegeben wird.

Auf dieselbe Ressource kann jetzt häufig von mehreren verschiedenen Endpunkten zugegriffen werden .
Auch der gleiche Endpunkt zurückgeben kann unterschiedliche Ressourcen in Abhängigkeit von einem Abfrage - String.

Sehen wir uns einige Beispiele an:

Verschiedene Endpunkte, die auf dieselbe Ressource zugreifen

Schauen Sie sich die folgenden Beispiele für verschiedene Endpunkte an :

/api/companies/5/employees/3
/api/v2/companies/5/employees/3
/api/employees/3

Sie könnten offensichtlich alle auf dieselbe Ressource in einer bestimmten API zugreifen .

Auch eine vorhandene API könnte komplett geändert werden. Dies könnte zu neuen Endpunkten führen, die über völlig neue und unterschiedliche URLs auf dieselben alten Ressourcen zugreifen:

/api/employees/3
/new_api/staff/3

Ein Endpunkt, der auf verschiedene Ressourcen zugreift

Wenn Ihr Endpunkt eine Sammlung zurückgibt, können Sie das Suchen / Filtern / Sortieren mithilfe von Abfragezeichenfolgen implementieren. Infolgedessen verwenden die folgenden URLs alle denselben Endpunkt ( /api/companies), können jedoch unterschiedliche Ressourcen (oder Ressourcensammlungen , die per Definition Ressourcen für sich sind) zurückgeben:

/api/companies
/api/companies?sort=name_asc
/api/companies?location=germany
/api/companies?search=siemens
Jpsy
quelle
4
schön erklärt 👍🏻
Mangonights
1
"Infolgedessen verwenden die folgenden URLs alle denselben Endpunkt (/ api / company), können jedoch unterschiedliche Ressourcen zurückgeben." Ich meine, nichts für ungut, aber Sie erfinden hier wirklich nur Ihre Interpretation. In Bezug auf REST sind dies nur Standorte mit unterschiedlichen Ressourcen. Der Endpunktteil, den Sie als einen anderen Teil der URL zu berücksichtigen versucht haben. Das liegt daran, dass Sie ein Programmierer sind und darüber nachdenken, wie es implementiert wird, als Code bei einer einzigen Aktionsmethode. Stellen Sie sich vor, all diese verschiedenen URLs wurden von 4 Servern weitergeleitet und bereitgestellt. Sind sie alle der gleiche Endpunkt? Es macht jetzt keinen Sinn.
Luke Puplett
1
Der Grund, warum Abfragezeichenfolgen nicht Teil von Endpunkten sind, liegt darin, dass Endpunkt weder Teil der Sprache von REST noch einer URL ist. Es ist einfach nicht. Sie denken an die Codierung der Webanwendung für die Handhabung. REST erwähnt nichts über Abfrageparameter oder Sortierung oder irgendetwas. Das tut es einfach nicht. Wenn Sie / orders verwenden, um eine Sammlung zurückzugeben, und / orders? Top = 10, das sind nur hübsche URLs, ist dies nicht mehr oder weniger RESTful als die Verwendung von Links zu / 32knre32nj für die Sammlung und eines Links zu / abcd für die Top-Ten-Bestellungen. Sie sind nur Ressourcenkennungen. URLs können nicht mehr oder weniger RESTful sein und ein Endpunkt ist keine Sache.
Luke Puplett
Ein wichtiger Teil von REST ist die Verknüpfung, sodass ein Verbraucher sich nicht um die Ressourcenkennungen kümmern muss. Es ist mir egal, welche URL sich hier hinter der Schaltfläche "Kommentar hinzufügen" befindet. Wenn wir aufhören, an Endpunkte und hübsche URLs zu denken, und stattdessen an Hyperlinks, bei denen die URL zufällig ist, ist es viel einfacher, nette Workflow-basierte APIs für das Interaktionsziel zu entwerfen - ich möchte nach einem Unternehmen suchen, damit x - Ihre API eine Reise sein sollte bis x, wobei sich die Suche in der Mitte des Flusses zum endgültigen Anwendungsstatus befindet.
Luke Puplett
Es gibt keine hochkanonische Definition oder Spezifikation für "Endpunkt". Alles läuft auf die Technologie hinaus, auf die es sich bezieht. Beispiel Google "Was ist ein Endpunkt?" und einer der Top-Artikel zu diesem Thema ist diese Seite. Wir definieren es hier basierend auf dem Kontext, mit dem wir es verwendet haben. Alle Beispiele in dieser Antwort sind RESTful, obwohl der Endpunkt selbst nicht unbedingt RESTful ist. Siehe SOAP.
Cchamberlain
7

Möglicherweise ist meine keine gute Antwort, aber hier geht es weiter.

Da ich mehr mit wirklich RESTful-Webdiensten über HTTP arbeite, habe ich versucht, die Benutzer davon abzuhalten, den Begriff Endpunkt zu verwenden, da er nicht klar definiert ist, und stattdessen die Sprache von REST zu verwenden, bei der es sich um Ressourcen und Ressourcenpositionen handelt.

Endpunkt ist für mich ein TCP-Begriff. Es ist mit HTTP zusammengeführt, da ein Teil der URL einen empfangenden Server identifiziert.

Ressource ist also kein neuerer Begriff, ich glaube nicht, ich denke, der Endpunkt wurde immer missbraucht, und wir erkennen dies, wenn wir uns mit REST als API- Stil beschäftigen .

Bearbeiten

Ich habe darüber gebloggt.

https://medium.com/@lukepuplett/stop-saying-endpoints-92c19e33e819

Luke Puplett
quelle
1

Laut https://apiblueprint.org/documentation/examples/13-named-endpoints.html ist eine Ressource ein "allgemeiner" Speicherort der angegebenen Entität - z. B. / customers / 30654 / orders, während ein Endpunkt die konkrete Aktion ist (HTTP-Methode) über die angegebene Ressource. Eine Ressource kann also mehrere Endpunkte haben.

Dafka
quelle
1
Sorry @Dafka, aber du liegst falsch. Ein Endpunkt hat nichts mit dem darauf verwendeten Verb (HTTP-Methode wie GET, POST, PUT, DELETE, PATCH) zu tun.
Jpsy
0

Stellen Sie sich einen Server vor, der Informationen zu Benutzern, Missionen und deren Belohnungspunkten enthält.

  1. Benutzer und Belohnungspunkte sind die Ressourcen
  2. Ein Endpunkt kann sich auf mehr als eine Ressource beziehen
  3. Endpunkte können entweder mit einer Beschreibung oder einer vollständigen oder teilweisen URL beschrieben werden

Geben Sie hier die Bildbeschreibung ein

Quelle: API-Endpunkte vs. Ressourcen

srinivas chaitanya
quelle
-1

1. Ressourcenbeschreibung „Ressourcen“ bezieht sich auf die von einer API zurückgegebenen Informationen.

2. Endpunkte und Methoden Die Endpunkte geben an, wie Sie auf die Ressource zugreifen, während die Methode die zulässigen Interaktionen (wie GET, POST oder DELETE) mit der Ressource angibt.

Zusätzliche Informationen: 3. Parameter Parameter sind Optionen, die Sie mit dem Endpunkt übergeben können (z. B. Angabe des Antwortformats oder des zurückgegebenen Betrags), um die Antwort zu beeinflussen.

4. Anforderungsbeispiel Das Anforderungsbeispiel enthält eine Beispielanforderung unter Verwendung des Endpunkts mit einigen konfigurierten Parametern.

5. Antwortbeispiel und Schema Das Antwortbeispiel zeigt eine Beispielantwort aus dem Anforderungsbeispiel. Das Antwortschema definiert alle möglichen Elemente in der Antwort.

Quell- Referenz-Link

Manthan_Admane
quelle