Was ist der Unterschied zwischen REST & RESTful?

540

Was ist der Unterschied zwischen einem REST-System und einem REST-fähigen System?

Von ein paar Dingen, die ich gelesen habe, sind die meisten sogenannten REST-Services tatsächlich RESTful-Services. Was ist der Unterschied zwischen den beiden.

AwkwardCoder
quelle
3
Der Grund für die Frage ist, dass wenn Sie den Artikel im Link lesen und nachschlagen, was Dr. Fielding über die meisten REST-Implementierungen denkt, diese überhaupt keine REST-Systeme sind. Sie weisen ein REST-Verhalten auf, können jedoch nicht als REST-Systeme eingestuft werden.
AwkwardCoder
4
Ich habe den Artikel gelesen, aber ich glaube nicht, dass er zu solchen semantisch nutzlosen Unterscheidungen geführt hat.
JasonTrue
3
Wikipedia-Artikel zu REST - en.wikipedia.org/wiki/Representational_State_Transfer - zweiter Absatz - "Die Einhaltung der REST-Einschränkungen wird häufig als" RESTful "bezeichnet."
Nate
1
@PramodNikumbh hat dies unten richtig beantwortet. Ein "REST" -System ist ein System, das einer breiteren Definition von REST entspricht. Es weist zumindest einige Ruheprinzipien auf. "Restful" beschreibt ein viel REST-konformeres System.
Andrew Norman
Nun, ich denke, es gibt eine Verwirrung im Namen, das "ful" in RESTful wird staatenlos und zustandsbehaftet verwirren und das sind zwei verschiedene Dinge, REST und RESTful müssen meiner persönlichen Meinung nach STATELESS sein. Stellen Sie sich ein zustandsbehaftetes REST mit dem Namen RESTles vor. :)
Waheed

Antworten:

487

Representational State Transfer (REST) ist ein Stil der Softwarearchitektur. Wie in einer Dissertation von Roy Fielding beschrieben, ist REST ein "Architekturstil", der im Wesentlichen die vorhandenen Technologien und Protokolle des Web nutzt.

RESTful wird normalerweise verwendet, um auf Webdienste zu verweisen, die eine solche Architektur implementieren.

Justin Ethier
quelle
146
Also ist REST die Architektur und RESTful ein Adjektiv?
manei_cc
4
@manei_cc: Obwohl Sie in der Praxis Dienste mit dem Namen RESTful finden, die nicht der REST-Architektur folgen und im Grunde REST-ähnlich sind, REST-Möchtegern usw. Achten Sie also immer darauf, dass ein "RESTful-Service" nicht unbedingt mit REST erstellt wird Architektur, aber wahr, wie Justin Ethier schrieb: nutzt die vorhandene Technologie und Protokolle des Web .
Azder
7
RESTful sollte für APIs verwendet werden, die REST wirklich respektieren. Ich habe zu viele "REST" -Webservices gesehen, die nur GET oder POST verwendeten. RESTful betont die vollständige Verwendung von HTTP-Verben und URL-Namenskonventionen. Aber es ist mein Standpunkt.
Martin
1
architectvon was? von URLs? wie https://translation.googleapis.com/language/translate/v2ist das der REST-Stil?
Asif Mushtaq
1
stackoverflow.com/users/3807248/pramod-nikumbh hat dies unten richtig beantwortet
Andrew Norman
193

REST-basierte Services / Architektur vs. RESTFUL Services / Architektur

Um diese 2 zu unterscheiden oder zu vergleichen, sollten Sie wissen, was REST ist .

REST ( RE Präsentations - S tate T ransfer) ist im Grunde ein Architekturstil der Entwicklung einige Prinzipien mit:

  • Es sollte staatenlos sein

  • Es sollte vom Server aus nur mit URI auf alle Ressourcen zugreifen

  • Es ist keine Verschlüsselung integriert

  • Es hat keine Sitzung

  • Es wird nur ein Protokoll verwendet - HTTP

  • Für CRUD - Operationen durchführen, sollten sie HTTP Verben wie get, post, putunddelete

  • Das Ergebnis sollte nur in Form von JSON oder XML, Atom, OData usw. zurückgegeben werden (Lightweight-Daten).

REST based services Befolgen Sie einige der oben genannten Prinzipien und nicht alle

RESTFUL services bedeutet, dass es allen oben genannten Prinzipien folgt.

Es ähnelt dem Konzept von:

Object-based languagesunterstützt alle OOPs-Konzepte, Beispiele : C ++, C #

Object oriented languagesunterstützt einige der OOPs-Funktionen, Beispiele : JavaScript, VB


Beispiel :

ASP Dot NET MVC 4 ist, REST-Basedwährend Microsoft WEB API ist RESTFul.

MVC unterstützt nur einige der oben genannten REST-Prinzipien, während die WEB-API alle oben genannten REST-Prinzipien unterstützt.

MVC unterstützt nur Folgendes von der REST-API

  • Wir können über URI auf die Ressource zugreifen

  • Es unterstützt das HTTP-Verb für den Zugriff auf die Ressource vom Server

  • Es kann die Ergebnisse in Form von JSON, XML, dh der HTTPResponse, zurückgeben.

Zur gleichen Zeit jedoch in MVC

  • Wir können die Sitzung nutzen

  • Wir können es zustandsbehaftet machen

  • Wir können Videos oder Bilder von der Controller-Aktionsmethode zurückgeben, die grundsätzlich gegen die REST-Prinzipien verstößt

Aus diesem Grund unterstützt MVC REST-Basedalle oben genannten Prinzipien und ist dies auch RESTFul.

Pramod Nikumbh
quelle
10
Ich verstehe nicht, warum dies abgelehnt wurde. Diese Antwort bringt viele klärende Informationen in die Frage.
Marcovecchio
5
beste Antwort bisher
Limon
2
Dies ist die beste Antwort.
Mário Meyrelles
2
Sie können FTP mit REST verwenden. Bitte sehen Sie: stackoverflow.com/questions/35534812/…
crazyTech
7
Die Sprachen unter den oben genannten Kategorien "Objektbasiert" und "Objektorientiert" sind umgekehrt. Objektorientierte Sprachen folgen allen OOPS-Prinzipien, während objektbasierte Sprachen einigen folgen.
Mrchief
119

"REST" ist ein architektonisches Paradigma. "RESTful" beschreibt die Verwendung dieses Paradigmas.

Einzelner Schuss
quelle
architectvon was? von URLs? wie https://translation.googleapis.com/language/translate/v2ist das der REST-Stil?
Asif Mushtaq
2
Eine REST-Architektur erfordert viele Merkmale. Sie können nicht sagen, dass etwas den REST-Prinzipien entspricht, indem Sie lediglich eine URL anzeigen.
SingleShot
42

Wie Jason in den Kommentaren sagte, wird RESTful nur als Adjektiv verwendet, das etwas beschreibt, das die REST-Einschränkungen respektiert.

Darrel Miller
quelle
29

REST steht für Representational State Transfer. Das heißt, der Staat selbst wird nicht übertragen, sondern nur dargestellt. Das häufigste Beispiel ist eine reine HTML-Server-basierte App (kein Javascript). Der Browser weiß nichts über die Anwendung selbst, aber über Links und Ressourcen kann der Server den Status der Anwendung an den Browser übertragen. Wenn eine Schaltfläche normalerweise eine Statusvariable (z. B. Seite geöffnet) in einer regulären Windows-Anwendung ändert, haben Sie im Browser einen Link, der eine solche Statusänderung darstellt.

Die Idee ist, Hypermedia zu verwenden. Und vielleicht, um neue Hypermedia-Typen zu erstellen. Möglicherweise können wir den Browser mit Javascript / AJAX erweitern und neue benutzerdefinierte Hypermedia-Typen erstellen. Und wir hätten eine echte REST-Anwendung.

Dies ist meine Kurzversion von REST. Das Problem ist, dass es schwer zu implementieren ist. Ich persönlich sage RESTful, wenn ich auf die REST-Prinzipien verweisen möchte, aber ich weiß, dass ich das gesamte Konzept von REST nicht wirklich umsetze. Wir sagen nicht wirklich SOAPful, weil Sie entweder SOAP verwenden oder nicht. Ich denke, die meisten Leute machen REST nicht so, wie es sich der Schöpfer Roy Fielding vorgestellt hat. Wir implementieren tatsächlich RESTful- oder REST-ähnliche Architekturen. Sie können seine Dissertation sehen und finden das Akronym REST, aber nicht das Wort RESTful.

Arturo Hernandez
quelle
23

REST ist ein Stil der Softwarearchitektur für verteilte Software

Die Einhaltung der REST-Einschränkungen wird als "RESTful" bezeichnet.

Wird heute sehr häufig verwendet, um Webdienste als Alternative zu SOAP zu erstellen.

Hier haben Sie einige Links zu überprüfen

http://en.wikipedia.org/wiki/Representational_State_Transfer
http://www.computerworld.com/s/article/297424/Representational_State_Transfer_REST_
http://www.ibm.com/developerworks/webservices/library/ws-restful/

Claudio Redi
quelle
13

Danke für die Antworten. Lesen Sie diesen Artikel von Alex Rodriguez, der darauf hinweist, dass ein RESTful-Webdienst vier grundlegende Merkmale aufweist:

  1. Verwenden Sie HTTP-Methoden explizit.
  2. Sei staatenlos.
  3. Stellen Sie verzeichnisstrukturähnliche URIs bereit.
  4. Übertragen Sie XML, JavaScript Object Notation (JSON) oder beides.
Kumait
quelle
Es hat tatsächlich 6 Einschränkungen.
IronBlossom
2
@IronBlossom Möchten Sie die Antwort mit den fehlenden zwei aktualisieren?
Paul Fleming
1
Link tot, neue URL scheint IBM - RESTful Web Services zu sein
1.
10

Representational State Transfer (REST) ​​ist ein Stil der Softwarearchitektur für verteilte Hypermedia-Systeme wie das World Wide Web. Der Begriff Representational State Transfer wurde im Jahr 2000 von Roy Fielding 1 [2] in seiner Dissertation eingeführt und definiert . Fielding ist einer der Hauptautoren der HTTP-Spezifikation (Hypertext Transfer Protocol) der Versionen 1.0 und 1.1. Die Einhaltung der REST-Einschränkungen wird als "RESTful" bezeichnet. Quelle: Wikipedia

Andersson Melo
quelle
8

Webdienste sind im Wesentlichen Websites, deren Inhalt von Computerprogrammen und nicht von Personen verwendet wird. REST ist eine Reihe von Architekturprinzipien, die festlegen, dass Webdienste HTTP und andere Webstandards maximal nutzen sollen, damit Programme all die guten Dinge erhalten, die Menschen bereits aus dem Web herausholen können. REST wird häufig mit SOAP-Webdiensten und anderen auf "Remote Procedure Call" ausgerichteten Webdiensten verglichen.

Stefan Tilkovs Präsentationen auf REST bei Parleys.com sind ziemlich gut, besonders diese .

Für ein Buch gibt es nichts Besseres als Richardson und Rubys Restful Web Services .

Jim Ferrans
quelle
Eine reguläre Website kann also als REST-Anwendung betrachtet werden?
yoyo_fun
1
@yoyo_fun: Ja, eine reguläre Website kann auch RESTfully erstellt werden. Auf einer bestimmten Abstraktionsebene spielt es keine Rolle, ob der Server HTML an einen Menschen oder JSON (etwa) an ein Programm zurückgibt.
Jim Ferrans
5

Ein auf REST basierender Service wird als "RESTful-Service" bezeichnet.

Quelle Ich verlasse mich darauf, Folgendes zu veröffentlichen: Dr.Dobbs Archive

Nickolay
quelle
4

Im Richardson Maturity Model sind 4 API-Ebenen definiert. Diese sind definiert als:

  • Stufe 0: Jedes System, das einen einzigen Endpunkt für alle seine Apis hat (SOAP oder RPC fallen in diese Kategorie). Level 0 APIs können auch "Befehlen" ähneln.

  • Stufe 1: Ein von ResourceUri beschriebenes System. Dies ist ein System, das mehrere entitätsbasierte URIs definiert (anstatt einen einzelnen Endpunkt zu haben, wie dies bei Systemen der Ebene 0 der Fall wäre). Diese URIs können verschiedene http-Aktionen (POST, GET, PUT usw.) verwenden, um verschiedene Aktionen für diese Ressource zu implementieren.

  • Stufe 2: auch bekannt als Stufe 1 mit konformer Verwendung von Standard-HTTP-Methoden / Verben und Multi-Status-Code-Antworten

  • Stufe 3: auch bekannt als Stufe 2 plus HATEOAS (Hypermedia in der Antwort enthalten, die zusätzliche Anrufe beschreibt, die Sie tätigen können)

Während Level 1, Level 2 und Level 3 als REST-Systeme betrachtet werden können, gelten nur die strengeren Level (auch bekannt als Level 2 und Level 3) als RESTful.

Im Wesentlichen sind alle RESTful-Apis REST-Apis, aber nicht alle RESTful-Apis sind RESTful

Definition des Richardson-Reifegradmodells

Andrew Norman
quelle
2

Stellen Sie sich REST als eine architektonische "Klasse" vor, während RESTful die bekannte "Instanz" dieser Klasse ist.

Bitte beachten Sie das ""; Wir haben es hier nicht mit "echten" Programmierobjekten zu tun.

Klopfen
quelle
1

Ein "REST-Service" und ein "RESTful-Service" sind ein und dasselbe.

Ein RESTful-System ist ein System, das den im Originaldokument definierten REST-Konventionen folgt , aus denen die Idee von RESTful-Netzwerkanwendungen hervorgegangen ist .

Es ist erwähnenswert, dass es unterschiedliche Ebenen der Ruhe gibt. Insgesamt ist REST ein Stil, kein Standard, daher gibt es Raum für eine Interpretation, die auf den Bedürfnissen basiert. Ein Beispiel sind hierarchische Ressourcen-URLs (z. B. /things/ID/relatedthings) und flache URLs (z. B. /things/IDund /relatedthings?thing=ID).

Brenden
quelle
1

REST (REpresentation State Transfer) ist eine Architektur, mit der WebServices erstellt werden.

und

RESTful ist eine Methode zum Schreiben von Diensten unter Verwendung der REST-Architekturen. RESTful Services stellen die Ressourcen zur Verfügung, um die Ziele für die Interaktion mit Clients zu identifizieren.

Manas
quelle
0

REST ist ein Architekturmuster zum Erstellen von Webdiensten. Ein RESTful-Service implementiert dieses Muster.

Sajadre
quelle