Quelle est la différence entre REST et RESTful

540

Quelle est la différence entre un système REST et un système RESTful?

D'après quelques éléments que j'ai lus, la plupart des services dits REST sont en fait des services RESTful. Quelle est donc la différence entre les deux.

AwkwardCoder
la source
3
La raison de la question est que si vous lisez l'article dans le lien et cherchez ce que le Dr Fielding pense de la plupart des implémentations REST, ce ne sont pas du tout des systèmes REST. Ils présentent un comportement RESTful mais ne peuvent pas être classés comme systèmes REST.
AwkwardCoder
4
J'ai lu l'article mais je ne pense pas qu'il l'ait conduit à de telles distinctions sémantiquement inutiles.
JasonTrue
3
Article de Wikipedia sur REST - en.wikipedia.org/wiki/Representational_State_Transfer - deuxième paragraphe - "Se conformer aux contraintes REST est souvent appelé" RESTful "."
Nate
1
@PramodNikumbh a répondu correctement ci-dessous. Un système "REST" est un système qui correspond à une définition plus large de REST. Il présente au moins quelques principes de repos. "Restful" décrit un système beaucoup plus conforme à REST.
Andrew Norman
Eh bien, je pense qu'il y a une confusion dans le nom, le "plein" dans RESTful confondra apatride et état et ce sont deux choses différentes, REST et RESTful à mon avis personnel, doivent être STATELESS. imaginez un REST avec état nommé RESTles. :)
Waheed

Réponses:

487

Le transfert d'état représentatif (REST) est un style d'architecture logicielle. Comme décrit dans une dissertation de Roy Fielding, REST est un "style architectural" qui exploite essentiellement la technologie et les protocoles existants du Web.

RESTful est généralement utilisé pour faire référence aux services Web implémentant une telle architecture.

Justin Ethier
la source
146
Donc, REST est l'architecture et RESTful un adjectif?
manei_cc
4
@manei_cc: Bien que dans la pratique, vous trouverez des services nommés RESTful qui ne suivent pas l'architecture REST et qui sont essentiellement similaires à REST, REST-wannabies etc. architecture, mais vrai comme l'écrivait Justin Ethier: exploite la technologie et les protocoles existants du Web .
Azder
7
RESTful doit être utilisé pour les API qui respectent vraiment REST. J'ai vu trop de webservices "REST" qui n'utilisaient que GET ou POST. RESTful met l'accent sur l'utilisation complète des verbes HTTP et des conventions de dénomination des URL. Mais c'est mon point de vue.
Martin
1
architectde quoi? d'urls? comme https://translation.googleapis.com/language/translate/v2c'est le style REST?
Asif Mushtaq
1
stackoverflow.com/users/3807248/pramod-nikumbh a répondu correctement ci
Andrew Norman
194

Services / Architecture basés sur REST vs Services / Architecture RESTFUL

Pour différencier ou comparer ces 2, vous devez savoir ce qu'est REST .

REST ( RE presentational S tate T ransfer) est fondamentalement un style de développement architectural ayant quelques principes:

  • Il devrait être apatride

  • Il doit accéder à toutes les ressources du serveur en utilisant uniquement l'URI

  • Il n'a pas de cryptage intégré

  • Il n'a pas de session

  • Il utilise un et un seul protocole - HTTP

  • Pour effectuer des opérations CRUD, il doit utiliser des verbes tels que HTTP get, post, putetdelete

  • Il doit renvoyer le résultat uniquement sous la forme de JSON ou XML, atom, OData etc. (données légères)

REST based services suivre certains des principes ci-dessus et pas tous

RESTFUL services signifie qu'il suit tous les principes ci-dessus.

Il est similaire au concept de:

Object-based languagesprend en charge tous les concepts OOP, exemples : C ++, C #

Object oriented languagesprend en charge certaines des fonctionnalités des POO, exemples : JavaScript, VB


Exemple :

ASP Dot NET MVC 4 est REST-Basedalors que Microsoft WEB API l'est RESTFul.

MVC ne prend en charge que certains des principes REST ci-dessus tandis que l'API WEB prend en charge tous les principes REST ci-dessus.

MVC prend uniquement en charge les éléments suivants à partir de l'API REST

  • Nous pouvons accéder à la ressource en utilisant l'URI

  • Il prend en charge le verbe HTTP pour accéder à la ressource à partir du serveur

  • Il peut renvoyer les résultats sous forme de JSON, XML, c'est-à-dire HTTPResponse.

Cependant, en même temps dans MVC

  • Nous pouvons utiliser la session

  • Nous pouvons le rendre dynamique

  • Nous pouvons retourner une vidéo ou une image à partir de la méthode d'action du contrôleur qui viole fondamentalement les principes REST

C'est pourquoi MVC est REST-Basedalors que l'API WEB prend en charge tous les principes ci-dessus et l'est RESTFul.

Pramod Nikumbh
la source
10
Je ne comprends pas pourquoi cela a été déclassé, cette réponse apporte beaucoup d'informations clarifiant la question.
Marcovecchio
5
meilleure réponse jusqu'à présent
Limon
2
C'est la meilleure réponse.
Mário Meyrelles
2
vous pouvez utiliser FTP avec REST. veuillez voir: stackoverflow.com/questions/35534812/…
crazyTech
7
Les langages des catégories "Basé sur l'objet" et "Orienté objet" ci-dessus sont inversés. Les langages orientés objet suivent tous les principes OOPS, tandis que ceux basés sur objet en suivent certains.
Mrchief
119

"REST" est un paradigme architectural. "RESTful" décrit l'utilisation de ce paradigme.

Coup unique
la source
architectde quoi? d'urls? comme https://translation.googleapis.com/language/translate/v2c'est le style REST?
Asif Mushtaq
2
Une architecture REST nécessite de nombreux traits. Vous ne pouvez pas dire que quelque chose adhère aux principes REST en affichant simplement une URL.
SingleShot
42

Comme Jason l'a dit dans les commentaires, RESTful est simplement utilisé comme un adjectif décrivant quelque chose qui respecte les contraintes REST.

Darrel Miller
la source
29

REST signifie transfert d'état représentatif. Cela signifie que l'État lui-même n'est pas transféré, mais une simple représentation de celui-ci l'est. L'exemple le plus courant est une application basée sur un serveur HTML pur (pas de javascript). Le navigateur ne sait rien de l'application elle-même mais grâce à des liens et des ressources, le serveur est en mesure de transférer l'état de l'application au navigateur. Lorsqu'un bouton changerait normalement une variable d'état (par exemple, page ouverte) dans une application Windows standard, dans le navigateur, vous avez un lien qui représente un tel changement d'état.

L'idée est d'utiliser l'hypermédia. Et peut-être pour créer de nouveaux types d'hypermédia. Nous pouvons potentiellement étendre le navigateur avec javascript / AJAX et créer de nouveaux types d'hypermédia personnalisés. Et nous aurions une vraie application REST.

Ceci est ma version courte de ce que REST représente, le problème est qu'il est difficile à mettre en œuvre. Personnellement, je dis RESTful, quand je veux faire référence aux principes REST, mais je sais que je ne mets pas vraiment en œuvre tout le concept de REST. Nous ne disons pas vraiment SOAPful, parce que vous utilisez SOAP ou non. Je pense que la plupart des gens ne font pas REST comme il a été imaginé par son créateur Roy Fielding, nous implémentons en fait des architectures RESTful ou RESTlike. Vous pouvez voir sa dissertation , et vous trouverez l'acronyme REST mais pas le mot RESTful.

Arturo Hernandez
la source
23

REST est un style d'architecture logicielle pour les logiciels distribués

La conformité aux contraintes REST est appelée «RESTful».

Très utilisé aujourd'hui pour créer des services Web comme alternative à SOAP.

Ici vous avez quelques liens à vérifier

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
la source
13

merci pour les réponses. Lisez cet article d'Alex Rodriguez qui suggère qu'un service Web RESTful a 4 caractéristiques de base qui sont:

  1. Utilisez explicitement les méthodes HTTP.
  2. Soyez apatride.
  3. Exposez les URI de type structure de répertoire.
  4. Transférez XML, JavaScript Object Notation (JSON) ou les deux.
Kumait
la source
Il a en fait 6 contraintes.
IronBlossom
2
@IronBlossom Care pour mettre à jour la réponse avec les deux manquants?
Paul Fleming
1
lien mort, la nouvelle URL semble être IBM - Services Web RESTful
dthal
10

Representational State Transfer (REST) ​​est un style d'architecture logicielle pour les systèmes hypermédias distribués tels que le World Wide Web. Le terme transfert d'état représentatif a été introduit et défini en 2000 par Roy Fielding 1 [2] dans sa thèse de doctorat. Fielding est l'un des principaux auteurs des versions 1.0 et 1.1 de la spécification Hypertext Transfer Protocol (HTTP). La conformité aux contraintes REST est appelée «RESTful». Source: Wikipedia

Andersson Melo
la source
8

Les services Web sont essentiellement des sites Web dont le contenu est consommé par des programmes informatiques et non par des personnes. REST est un ensemble de principes architecturaux qui stipulent que les services Web doivent exploiter au maximum HTTP et d'autres normes Web, de sorte que les programmes obtiennent toutes les bonnes choses que les gens peuvent déjà retirer du Web. REST est souvent en contraste avec les services Web SOAP et d'autres services Web orientés «appel de procédure distante».

Les présentations de Stefan Tilkov sur REST sur Parleys.com sont assez bonnes, surtout celle-ci .

Pour un livre, vous ne pouvez pas trouver mieux que Richardson et Ruby's Restful Web Services .

Jim Ferrans
la source
Un site Web ordinaire peut donc être considéré comme une application REST?
yoyo_fun
1
@yoyo_fun: Oui, un site Web régulier peut également être construit avec REST. À un certain niveau d'abstraction, que le serveur retourne du HTML à un humain ou du JSON (disons) à un programme est sans importance.
Jim Ferrans
5

Un service basé sur REST est appelé "service RESTful".

Source, je compte sur le fait de publier cela: Archive Dr.Dobbs

nickolay
la source
4

Il existe 4 niveaux d'API définis dans le modèle de maturité Richardson. Ceux-ci sont définis comme:

  • niveau 0: tout système qui a un point de terminaison unique pour tous ses apis (SOAP ou RPC entrent dans cette catégorie). Les API de niveau 0 peuvent également ressembler à des "commandes".

  • niveau 1: un système décrit par ResourceUri. Il s'agit d'un système qui définit plusieurs URI basés sur des entités (au lieu d'avoir un seul point de terminaison comme le feraient les systèmes de niveau 0). Ces URI peuvent utiliser différentes actions http (POST, GET, PUT, etc.) pour implémenter différentes actions sur cette ressource.

  • niveau 2: alias niveau 1 avec une utilisation conforme des méthodes / verbes HTTP standard et des réponses de code multi-états

  • niveau 3: alias niveau 2 plus HATEOAS (hypermédia inclus dans la réponse qui décrit les appels supplémentaires que vous pouvez effectuer)

Alors que les niveaux 1, niveau 2 et niveau 3 peuvent être considérés comme des systèmes REST, seuls les niveaux plus stricts (alias niveau 2 et niveau 3) sont considérés comme RESTful.

Donc, essentiellement tous les API RESTful sont des API REST, mais tous les API REST ne sont pas RESTful

définition du modèle de maturité Richardson

Andrew Norman
la source
2

Considérez REST comme une "classe" architecturale tandis que RESTful est "l'instance" bien connue de cette classe.

Veuillez noter le ""; il ne s'agit pas ici de "vrais" objets de programmation.

Tapoter
la source
1

Un «service REST» et un «service RESTful» sont une seule et même chose.

Un système RESTful est tout système qui suit les conventions REST telles que définies dans le document d'origine qui a créé l'idée d'applications en réseau RESTful .

Il convient de noter qu'il existe différents niveaux de RESTfulness. Dans l'ensemble, REST est un style, pas une norme, donc il y a de la place pour une interprétation basée sur les besoins. un exemple est les URL de ressources hiérarchiques (par exemple /things/ID/relatedthings) vs les URL plates (par exemple /things/IDet /relatedthings?thing=ID)

Brenden
la source
1

REST (REpresentation State Transfer) est une architecture à l'aide de laquelle les WebServices sont créés.

et

RESTful est un moyen d'écrire des services à l'aide des architectures REST. Les services RESTful exposent les ressources pour identifier les cibles d'interaction avec les clients.

Manas
la source
0

REST est un modèle architectural pour la création de services Web. Un service RESTful implémente ce modèle.

sajadre
la source