I have read about REST, but never really understood meaning of ''Representational State Transfer''. I tried to read Fielding''s dissertation, but did not understand this term and why has he used it. What does it mean? Which state? What transfer? Thanks, Amita. -- Posted via http://www.ruby-forum.com/.
Amita Bhatkhande wrote:> I have read about REST, but never really understood meaning of > ''Representational State Transfer''. I tried to read Fielding''s > dissertation, but did not understand this term and why has he used it. > What does it mean? Which state? What transfer?I''m not sure anyone knows why Fielding used this term. I suppose he had to call it something, so that''s what he chose. However, I''ll try to explain it as I understand it: Representational: The web consists of resources in the form of web pages that are represented using a Uniform Resource Identifier (URI). REST extends this definition to refer to other types of resources of an application (i.e. database tables). Which, can also be represented using a URI. http://example.com/posts/1 represents the first Post resource in the posts collection. State: This is the current state of the resources. Transfer (or more precisely State Transfer): The act of modifying the current state of the resources. Adding a new one, modifying an existing one, deleting an existing one, etc. REST defines a convention of using HTTP to both represent and change the state of resources. That''s a close as I can come to defining "Representational State Transfer." Hope that helps. -- Posted via http://www.ruby-forum.com/.
I for one found this post very useful. On Mon, Apr 27, 2009 at 10:16 PM, Robert Walker < rails-mailing-list-ARtvInVfO7ksV2N9l4h3zg@public.gmane.org> wrote:> > Amita Bhatkhande wrote: > > I have read about REST, but never really understood meaning of > > ''Representational State Transfer''. I tried to read Fielding''s > > dissertation, but did not understand this term and why has he used it. > > What does it mean? Which state? What transfer? > > I''m not sure anyone knows why Fielding used this term. I suppose he had > to call it something, so that''s what he chose. > > However, I''ll try to explain it as I understand it: > > Representational: > The web consists of resources in the form of web pages that are > represented using a Uniform Resource Identifier (URI). REST extends this > definition to refer to other types of resources of an application (i.e. > database tables). Which, can also be represented using a URI. > http://example.com/posts/1 represents the first Post resource in the > posts collection. > > State: > This is the current state of the resources. > > Transfer (or more precisely State Transfer): > The act of modifying the current state of the resources. Adding a new > one, modifying an existing one, deleting an existing one, etc. > > REST defines a convention of using HTTP to both represent and change the > state of resources. That''s a close as I can come to defining > "Representational State Transfer." > > Hope that helps. > -- > Posted via http://www.ruby-forum.com/. > > > >--~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
Hi -- Robert Walker wrote:> Amita Bhatkhande wrote: >> I have read about REST, but never really understood meaning of >> ''Representational State Transfer''. I tried to read Fielding''s >> dissertation, but did not understand this term and why has he used it. >> What does it mean? Which state? What transfer? > > I''m not sure anyone knows why Fielding used this term. I suppose he had > to call it something, so that''s what he chose. > > However, I''ll try to explain it as I understand it: > > Representational: > The web consists of resources in the form of web pages that are > represented using a Uniform Resource Identifier (URI). REST extends this > definition to refer to other types of resources of an application (i.e. > database tables). Which, can also be represented using a URI. > http://example.com/posts/1 represents the first Post resource in the > posts collection.A resource in the REST sense isn''t anything as concrete as a database table, though. It''s more conceptual. As Fielding says: "The resource is not the storage object. The resource is not a mechanism that the server uses to handle the storage object."> State: > This is the current state of the resources. > > Transfer (or more precisely State Transfer): > The act of modifying the current state of the resources. Adding a new > one, modifying an existing one, deleting an existing one, etc. > > REST defines a convention of using HTTP to both represent and change the > state of resources. That''s a close as I can come to defining > "Representational State Transfer."My nutshell take on it is something like this: A given system gives and receives representations of resources. A resource is a very high-level construct; a representation is more specific, and has a content-type and so forth. Resources don''t. (Even more low-level are matters of storage, which may vary and which are not, themselves, either resources or representations.) A resource is always in a given state. Resource states are altered via the exchange of representations. So if I want to correct the spelling of my name on a site, I submit a representation of my profile with the new spelling (probably in the form of a Web form). If I want to make sure it''s OK, I request a representation (probably in the form of an HTML document) to inspect. I''ve written a bit more about this on these blog posts: http://dablog.rubypal.com/2008/3/23/splitting-hairs-over-resource http://dablog.rubypal.com/2008/4/24/splitting-hairs-over-resource-part-2 specifically in a Rails context. (Wow, was that more than a year ago?) David -- David A. Black / Ruby Power and Light, LLC Ruby/Rails consulting & training: http://www.rubypal.com Now out in PDF: The Well-Grounded Rubyist (http://manning.com/black2) "Ruby 1.9: What You Need To Know" Envycasts with David A. Black http://www.envycasts.com
David A. Black wrote:> Hi -- > > Robert Walker wrote: >> >> Representational: >> The web consists of resources in the form of web pages that are >> represented using a Uniform Resource Identifier (URI). REST extends this >> definition to refer to other types of resources of an application (i.e. >> database tables). Which, can also be represented using a URI. >> http://example.com/posts/1 represents the first Post resource in the >> posts collection. > > A resource in the REST sense isn''t anything as concrete as a database > table, though. It''s more conceptual. As Fielding says: "The resource is > not the storage object. The resource is not a mechanism that the server > uses to handle the storage object."Absolutely. Thanks David for this elaboration.> A given system gives and receives representations of resources. A > resource is a very high-level construct; a representation is more > specific, and has a content-type and so forth. Resources don''t. (Even > more low-level are matters of storage, which may vary and which are not, > themselves, either resources or representations.) > > A resource is always in a given state. Resource states are altered via > the exchange of representations. So if I want to correct the spelling of > my name on a site, I submit a representation of my profile with the new > spelling (probably in the form of a Web form). If I want to make sure > it''s OK, I request a representation (probably in the form of an HTML > document) to inspect.Nice explanation. I look forward to reading your articles when I have a few spare moments. -- Posted via http://www.ruby-forum.com/.
David, Your posts are certainly an interesting aside on the IMproper usage of the term "resource", but it doesn''t (for me) answer the original question: "What is Representational State Transfer?" Like Amita, I struggle with this. My hope is to someday have a succinct way of expressing the answer, without being forced to convey all of the detailed nuamce of Fielding''s dissertation (which I don''t really grasp in any great detail). I kinda like where Robet was going, but I''ll suggest a slight rephrasing: "Representational State Transfer defines a convention for using HTTP to both identify and manipulate related information that is conceptually mapped into an aggrregate construct referred to as a Resource." I repeat - I don''t really understand all of the detailed nuance. I''m struggling to create a simple articulation of the basic idea. Is my articulation sorta, kinda, in a way, maybe correct? How can my articulation be improved? Jim Maher On Apr 27, 5:32 pm, "David A. Black" <dbl...-0o/XNnkTkwhBDgjK7y7TUQ@public.gmane.org> wrote:> Hi -- > > > > > > Robert Walker wrote: > > Amita Bhatkhande wrote: > >> I have read about REST, but never really understood meaning of > >> ''Representational State Transfer''. I tried to read Fielding''s > >> dissertation, but did not understand this term and why has he used it. > >> What does it mean? Which state? What transfer? > > > I''m not sure anyone knows why Fielding used this term. I suppose he had > > to call it something, so that''s what he chose. > > > However, I''ll try to explain it as I understand it: > > > Representational: > > The web consists of resources in the form of web pages that are > > represented using a Uniform Resource Identifier (URI). REST extends this > > definition to refer to other types of resources of an application (i.e. > > database tables). Which, can also be represented using a URI. > >http://example.com/posts/1represents the first Post resource in the > > posts collection. > > A resource in the REST sense isn''t anything as concrete as a database > table, though. It''s more conceptual. As Fielding says: "The resource is > not the storage object. The resource is not a mechanism that the server > uses to handle the storage object." > > > State: > > This is the current state of the resources. > > > Transfer (or more precisely State Transfer): > > The act of modifying the current state of the resources. Adding a new > > one, modifying an existing one, deleting an existing one, etc. > > > REST defines a convention of using HTTP to both represent and change the > > state of resources. That''s a close as I can come to defining > > "Representational State Transfer." > > My nutshell take on it is something like this: > > A given system gives and receives representations of resources. A > resource is a very high-level construct; a representation is more > specific, and has a content-type and so forth. Resources don''t. (Even > more low-level are matters of storage, which may vary and which are not, > themselves, either resources or representations.) > > A resource is always in a given state. Resource states are altered via > the exchange of representations. So if I want to correct the spelling of > my name on a site, I submit a representation of my profile with the new > spelling (probably in the form of a Web form). If I want to make sure > it''s OK, I request a representation (probably in the form of an HTML > document) to inspect. > > I''ve written a bit more about this on these blog posts: > > http://dablog.rubypal.com/2008/3/23/splitting-hairs-over-resourcehttp://dablog.rubypal.com/2008/4/24/splitting-hairs-over-resource-part-2 > > specifically in a Rails context. (Wow, was that more than a year ago?) > > David > > -- > David A. Black / Ruby Power and Light, LLC > Ruby/Rails consulting & training:http://www.rubypal.com > Now out in PDF: The Well-Grounded Rubyist (http://manning.com/black2) > "Ruby 1.9: What You Need To Know" Envycasts with David A. Blackhttp://www.envycasts.com- Hide quoted text - > > - Show quoted text -
JDM wrote:> "Representational State Transfer defines a convention for using HTTP > to both identify and manipulate related information that is > conceptually mapped into an aggrregate construct referred to as a > Resource." >> Jim MaherQuite succinct. I like it. -- Posted via http://www.ruby-forum.com/.
JDM wrote:> I kinda like where Robet was going, but I''ll suggest a slight > rephrasing: > > "Representational State Transfer defines a convention for using HTTP > to both identify and manipulate related information that is > conceptually mapped into an aggrregate construct referred to as a > Resource."Thanks for the vote of confidence. I certainly don''t claim to be an expert on the subject. There are a lot of people smarter on this stuff than I, which is why I tried to remain somewhat abstract. I do like your rewording of my original thought. It certainly seems like a good start. However, as David pointed out in his excellent blog postings, this definition may still be omitting one important aspect of REST, which is the distinction between a "resource" and a "representation" of a resource. I feel that I have a good mental grasp on this distinction, even if I''m not so great at applying the concepts to the written word. -- Posted via http://www.ruby-forum.com/.
I guess I was trying to duck the issue, but I see that does nothiing to elucidate the use of the word "Representational" in the REST name. I''ll suggest this change (though its getting quite wordy): "Representational State Transfer defines a convention for using HTTP to both identify and manipulate related information that is conceptually mapped into an aggrregate construct referred to as a Resource, via the transfer between application components of Representations that contain the current or intended state of that Resource." Whadda ya think? Jim Maher On Apr 28, 4:35 pm, Robert Walker <rails-mailing-l...-ARtvInVfO7ksV2N9l4h3zg@public.gmane.org> wrote:> JDM wrote: > > I kinda like where Robet was going, but I''ll suggest a slight > > rephrasing: > > > "Representational State Transfer defines a convention for using HTTP > > to both identify and manipulate related information that is > > conceptually mapped into an aggrregate construct referred to as a > > Resource." > > Thanks for the vote of confidence. I certainly don''t claim to be an > expert on the subject. There are a lot of people smarter on this stuff > than I, which is why I tried to remain somewhat abstract. I do like your > rewording of my original thought. It certainly seems like a good start. > However, as David pointed out in his excellent blog postings, this > definition may still be omitting one important aspect of REST, which is > the distinction between a "resource" and a "representation" of a > resource. I feel that I have a good mental grasp on this distinction, > even if I''m not so great at applying the concepts to the written word. > -- > Posted viahttp://www.ruby-forum.com/.