web-dev-qa-db-fra.com

Que signifie exactement REST? Qu'est-ce que c'est, et pourquoi devient-il grand maintenant?

Je comprendre (je pense) l'idée de base derrière RESTful-ness. Utilisez les méthodes HTTP sémantiquement - GET obtient, PUT met, DELETE supprime, etc ... pensais avoir compris l'idée derrière REST, mais je pense que je confond cela avec les détails d'une implémentation HTTP. Quelle est l'idée motrice derrière le repos, pourquoi cela devient-il une chose importante? Les gens l'utilisent-ils depuis longtemps, dans un coin des internets sur lequel ma lampe de poche n'a jamais brillé?


50

Voici à quoi pourrait ressembler REST:

POST /user
fname=John&lname=Doe&age=25

Le serveur répond:

201 Created
Location: /user/123

À l'avenir, vous pourrez ensuite récupérer les informations utilisateur:

GET /user/123

Le serveur répond (en supposant une réponse XML):

200 OK
<user><fname>John</fname><lname>Doe</lname><age>25</age></user>

Mettre à jour:

PUT /user/123
fname=Johnny
55
pbreitenbach

Voici mon point de vue ...

L'attraction de faire des services RESTful est que plutôt que de créer des services Web avec des dizaines de méthodes fonctionnelles, nous standardisons sur quatre méthodes (Créer, récupérer, mettre à jour, détruire):

  • POST
  • GET
  • METTRE
  • SUPPRIMER

REST devient populaire car il représente également une standardisation des formats de messagerie au niveau de la couche application. Alors que HTTP utilise les quatre verbes de base de REST, le format de message HTTP commun de HTML n'est pas un contrat pour la création d'applications.

La meilleure explication que j'ai entendue est une comparaison de TCP/IP à RSS.

Ethernet représente une standardisation sur le réseau physique. Le protocole Internet (IP) représente une standardisation plus haut dans la pile et a plusieurs variantes différentes (TCP, UDP, etc.). L'introduction du "Transmission Control Protocol" (livraison garantie des paquets) a défini des contrats de communication qui nous ont ouverts à un tout nouvel ensemble de services (FTP, Gopher, Telnet, HTTP) pour la couche application.

Dans l'analogie, nous avons adopté XML comme "protocole", nous commençons maintenant à standardiser les formats de message. RSS devient rapidement la base de nombreux services RESTful. L'API GData de Google est une variante RSS/ATOM.

Le "gadget de bureau" est une excellente réalisation de ce battage médiatique: un simple client peut consommer du contenu Web de base ou des mashups complexes en utilisant une API et une norme de messagerie communes.

18
bryanbcook

HTTP est actuellement sous-utilisé et mal utilisé.

Nous n'utilisons généralement que deux méthodes HTTP: GET et POST, mais il y en a d'autres: DELETE, PUT, etc ( http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html =)

Donc, si nous avons des ressources, définies par des URL RESTful (chaque objet de domaine dans votre application a une URL unique sous la forme http://yoursite.com/path/to/the/resource ) et une implémentation HTTP décente , nous pouvons manipuler des objets de votre domaine en écrivant des phrases:

OBTENIR http://votresite.com/path/to/the/resource

SUPPRIMER http://yoursite.com/path/to/the/resource

POST http://votresite.com/path/to/the/resource

etc

l'architecture est sympa et tout.

mais ce n'est qu'une vue théorique, les scénarios du monde réel sont décrits dans tous les liens postés dans les réponses avant le mien.

11
miceuz

Revenons à l'histoire, parlons de la recherche Roy Fielding - " Styles architecturaux et conception d'architectures logicielles en résea ". C'est un gros papier et parle de beaucoup de choses diverses. Mais en tant qu'ingénieur standard, comment voulez-vous expliquer la signification claire de REST (Representational State Transfer), et quel est son style architectural?.

Voici ma façon d'expliquer - "Qu'est-ce que le REST".

Voir ce www (World Wide Web) fonctionnant au-dessus de divers matériels, par exemple routeurs, serveurs, pare-feu, infrastructures cloud, commutateurs, LAN, WAN. L'objectif global de ce www (world wide web) de distribuer hypermédia . Ce World Wide Web équipé de divers services, par exemple services d'information, sites Web, chaînes youtube, sites Web dynamiques, sites Web statiques. Ce World Wide Web utilise le protocole HTTP pour distribuer l'hypermédia à travers le monde avec un mécanisme client/serveur. Ce protocole HTTP fonctionne au-dessus de TCP/IP ou d'une autre pile réseau appropriée.

Ce protocole HTTP utilise huit méthodes pour gérer le "protocole de distribution" ou le "style architectural de distribution". Ces huit méthodes sont à savoir: OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT.

Mais en plus de ce HTTP, les applications Web utilisent leur propre façon de distribuer l'hypermédia, par exemple les applications Web utilisent des services Web qui sont fortement liés aux clients et aux serveurs ou les applications Web utilisent leur propre façon de mécanisme client/serveur conçu pour faire un tel canal de distribution au-dessus de HTTP.

Qu'est-ce Roy Fielding Research dit, que ces huit méthodes OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT de HTTP sont si réussies pour fournir HyperMedia à travers le monde en plus d'une variété de ressources matérielles et piles de réseau avec mécanisme client/serveur, pourquoi n'utilisons-nous pas la même stratégie avec notre application Web? Sur ce GET, POST, DELETE et PUT sont les plus utilisés. Ainsi, quatre méthodes fournissent HyperMedia à travers le monde.

Dans l'application REST API Style Architecture, une application Web doit concevoir la logique métier (réside dans un serveur, par exemple Tomcat, Apache HTTP) avec tous les ensembles d'entités objets (par exemple, le client est une entité) et les opérations possibles (par exemple, 'Récupérer les informations client sur la base d'un identifiant client') sur eux. Ces opérations possibles avec ces entités doivent être conçu avec quatre opérations ou méthodes principales à savoir - Créer, récupérer, mettre à jour, supprimer.Ces entités appelées ressources et qui sont présentées ou représenté sous une forme par exemple JSON ou XML ou autre. Nous avons un client (navigateurs) qui appelle Create, Retrieve, Update, Delete (CRUD) pour exécuter la fonction appropriée sur une telle ressource réside sur le serveur.

Mais comme expliqué le concept de Représentation , signifie la façon dont les entités de la logique métier ou les objets sont représentés. mais qu'en est-il du "transfert d'État"?.

Le State Transfer , ses discussions sur "l'état de communication" du client au serveur. Il parle de la conception des "transferts d'état" du client au serveur, par exemple Le client a d'abord appelé l'opération "Créer un client", après avoir appelé ce quel serait le prochain état du client ou les états du client que le "client" peut appeler. Son état peut être de "récupérer les données client créées", de "mettre à jour les données client" ou

10
Sumit Arora

REST est une architecture où les ressources sont définies et adressées.

Pour mieux comprendre REST mieux, vous devriez regarder le Resource Oriented Architecture (ROA) qui donne un ensemble de directives pour la mise en œuvre effective du REST architecture.

REST n'a pas besoin d'être sur HTTP, mais c'est le plus courant. REST a d'abord été créé par l'un des créateurs de HTTP.

5
Brian R. Bondy