La grande question, le RESTE est principalement expliqué par la base de données comme exemples, où quelque chose est stockée, mise à jour, la récupération, l'supprimé. Il y a peu d'exemples comme celui-ci, où le serveur est censé traiter les données d'une certaine façon. Je ne pense pas que Roy Fielding inclus dans sa thèse, qui a été basé sur http, après tout.
Mais il ne parle de "representational state transfer" comme une machine d'état, avec des liens en mouvement à l'état suivant. De cette façon, les documents (les représentations) de garder une trace de l'état du client, au lieu du serveur à avoir à le faire. De cette façon, il n'y a pas de client état, que l'état en termes de lien qui vous êtes.
J'ai pensé à ce sujet, et il me semble raisonnable que, pour obtenir le serveur pour traiter quelque chose pour vous, lorsque vous téléchargez, le serveur va créer automatiquement les ressources connexes, et de vous donner les liens (en fait, il n'aurait pas besoin de créer automatiquement: il pourrait juste vous dire les liens, et il ne les créer quand et si vous les suivez - paresseux création). Et aussi de vous donner des liens pour créer de nouvelles ressources connexes - une ressource liés a la même URI, mais est plus (ajoute un suffixe). Par exemple:
- Vous téléchargez (POST) la représentation de la notion de transaction avec toutes les informations. Cela ressemble à un appel RPC, mais c'est vraiment de la création de la "transaction proposée des ressources". e.g URI:
/transaction
Pépins sera la cause de plusieurs de ces ressources à être créés, chacun avec un URI différent.
- Le serveur de la réponse de l'etat à la création de la ressource URI, sa représentation - ce qui inclut le lien (URI) pour créer la ressource connexe d' un nouveau "transaction validée ressources". D'autres ressources connexes sont le lien pour supprimer la transaction proposée. Ce sont des états dans l'état de la machine, le client peut suivre. Logiquement, ceux-ci font partie de la ressource qui a été créé sur le serveur, au-delà de l'information que le client fourni. e.g Uri:
/transaction/1234/proposed
, /transaction/1234/committed
- Vous POST le lien pour créer la "transaction validée ressources", ce qui crée de la ressource, en changeant l'état du serveur (les soldes des deux comptes)**. De par sa nature, cette ressource ne peut être créé qu'une seule fois, et ne peut pas être mis à jour. Par conséquent, des problèmes de commettre de nombreuses transactions ne peut pas se produire.
- Vous pouvez OBTENIR ces deux ressources, pour voir ce que leur état est. En supposant qu'un POST peut changer d'autres ressources, la proposition serait désormais être marqué comme "commis" (ou peut-être pas disponible à tous).
Ceci est similaire à la façon dont les pages web fonctionnent avec la version finale page web en disant: "êtes-vous sûr de vouloir faire cela?" Final page web est lui-même une représentation de l'état de la transaction, qui comprend un lien pour aller vers l'état suivant. Non seulement les transactions financières; aussi (par exemple) puis un aperçu de s'engager sur wikipédia. Je suppose que la distinction en RESTE, c'est que chaque étape de la séquence d'états a un nom explicite (URI).
Dans la vie réelle des opérations et des ventes, il y a souvent des physiques différents documents pour les différentes étapes d'une transaction (proposition, commande, réception, etc). Encore plus pour l'achat d'une maison, avec le règlement..
Otoh, que C'est comme jouer avec une sémantique pour moi; je ne suis pas à l'aise avec la nominalisation de conversion les verbes en noms pour faire il Reposante, "parce qu'il utilise des noms (Uri) au lieu de verbes (appels RPC)". c'est à dire le nom de la "transaction validée ressource" au lieu du verbe "commettre cette transaction". Je suppose que l'un des avantages de la nominalisation est vous pouvez vous référer à la ressource par nom, au lieu d'avoir besoin de le spécifier dans une autre façon (comme le maintien de l'état de session, de sorte que vous savez ce que "cette" transaction...)
Mais la question importante est: Quels sont les avantages de cette approche? c'est à dire De quelle façon est-ce RESTE de style mieux que le style RPC? Est une technique qui est génial pour les pages web également utile pour le traitement de l'information, au-delà de stocker/récupérer/mise à jour/supprimer? Je pense que le principal avantage de REPOS est l'évolutivité; un seul aspect de l'est n'ayant pas besoin de maintenir l'état explicitement (mais il est implicite dans l'URI de la ressource, et la prochaine états comme des liens dans sa représentation). En ce sens, il contribue. Peut-être cela contribue à la dispersion/pipeline trop? Otoh, que seul l'utilisateur en transaction spécifique, donc il n'y a aucun avantage à la mise en cache afin que d'autres puissent le lire, la grande victoire pour http.