SlideShare a Scribd company logo
1 of 9
RE presentational  S tate  T ransfer
Think of REST this way –  when a browser gets and displays  the elements which make up an HTML page, it is getting a  representation  of the  current state of that  resource .
What is wrong with XML/RPC and SOAP  ? Roy Fielding feels that using HTTP to piggyback application protocols through firewalls the way XML-RPC and SOAP do is a fundamentally misguided idea.  It defeats the idea of having a firewall  and results in firewall vendors having to detect the piggybacked protocol in order to protect the system.  Since most SOAP applications use HTTP for exactly that purpose, you can see where the conflict between REST and SOAP got started. Fielding feels that if you are going to use HTTP, it should be with HTTP semantics.
Resources and Representations The last important bit is the distinction between a resource and its representations.  A resource is the real thing that is being acted upon with a request.  For example, deleting a file from a folder, adding an entry to a blog, or reading the heart rate of a patient.  The data transmitted to and from the resource is a representation of it.  Sometimes the representation can be faithful, such as in a file copy, and sometimes it's just a description, such as the sound of someone's voice. The end effect is that we never send or receive resources, only their representation.  The format of the representation is determined by the content-type.  And the interaction of the representation on the resource is determined by the verb.
REST Verbs Let’s explore the four basic verbs (GET, PUT, DELETE, POST) to define application behavior
GET The GET verb is  used to read a resource .  An important rule of thumb is that a GET operation is  safe .  That is, it can be done repeatedly without changing visibly the state of the resource.  This property is very important for various reasons.   First, indexing engines use GET to index the contents of a resource.  So it would be bad if indexing a resource also changed it.   Second,  intermediaries, such as proxies, may cache results of a GET operation to accelerate subsequent accesses to the same resource. Let's assume we have an image as a resource at "http://myserver/myphotos/mywedding.img".  We can retrieve this image by doing a GET operation on it: GET http://myserver/myphotos/mywedding.img  Similarly, we can also query a complex resource, such as a blog, to get parts of the data: GET http://myserver/myblog/2006-12-25T11:12:05.001Z/comments?query=author:anonymous  The GET verb is the fundamental read operation for resources.    All data resources support GET, but not all behavioral resources do. While a GET request cannot have side-effects, it can return only parts of the resource.  This means that  GET can act as both a read operation and a query operation .
PUT and DELETE The PUT and DELETE verbs  allow a request to alter the state of a resource atomically .   For example, if we wanted to change the image of our earlier example, we could upload a new one using the same URI and the PUT verb:  PUT http://myserver/myphotos/mywedding.img   This operation would indicate to the server that we want to replace the target resource with the contents of our request. Similarly, if we wanted to delete the image, we could use the DELETE verb: DELETE http://myserver/myphotos/mywedding.img   This operation states we want the server to delete or reset the target resource.   Note that PUT and DELETE apply to the entire resource and not just parts of it.  So, when doing a PUT operation, the entire resource is replaced .  PUT acts on the entire resource!  The same is true for DELETE: DELETE acts on the entire resource! The PUT and DELETE operations  are atomic .   If two PUT operations occur simultaneously, one of them will win and determine the final state of the resource.   The same is true when a PUT and DELETE operation occur simultaneously.  Either the resource's final state is updated or it is deleted, but nothing in between.  In the case of two simultaneous DELETE operations, the order does not matter, because deleting a resource again has no effect.
POST The POST verb can  carry a variety of meanings.   It's the Swiss Army Knife of HTTP verbs.  For some resources, it may be used to alter the internal state.  For others, it's behavior may be that of a remote procedure call ( http://en.wikipedia.org/wiki/Remote_procedure_call ). In the example of our blog, we could add a new blog by using the POST verb: POST http://myserver/myblog  The POST operation is very generic and no specific meaning can be attached to it.  In general, use POST when only a subset of a resource needs to be modified and it cannot be accessed as its own resource; or when the equivalent of a method call must be exposed.
First of all a web service  needs a communication channel . You need to be able to ask something to the service and the web service then needs to respond. In the REST web service you ask something just by typing a url.  In the url you give certain parameters that define which information you want the web service to return to you (just like giving GET variables to a page). If you made the correct web service call, it will respond you with an XML page containing the information you’ve asked. An example: http://www.somecompany.com/webservice/?searchuser=yoursearchstring if the user of the string exists the xml will be something like this: yoursearchstring The web service responds and says, I’ve found a user with that username. You can check the stat=”ok” parameter.  If the web service didn’t found a user with your search string it will respond something like this: stat=”fail”, with the error message “User not found”.  Your only task, as a programmer, is to catch that xml and parse it to usable data. And that’s all there is to it. Yes, it’s as simple as that.  Source --> http://www.bornontheweb.be/2006/03/01/rest-web-service-a-flickr-tutorial/

More Related Content

What's hot

ASP.NET Web API
ASP.NET Web APIASP.NET Web API
ASP.NET Web API
habib_786
 

What's hot (20)

Introduction to the Web API
Introduction to the Web APIIntroduction to the Web API
Introduction to the Web API
 
introduction about REST API
introduction about REST APIintroduction about REST API
introduction about REST API
 
REST API Design & Development
REST API Design & DevelopmentREST API Design & Development
REST API Design & Development
 
Rest api standards and best practices
Rest api standards and best practicesRest api standards and best practices
Rest api standards and best practices
 
Web api
Web apiWeb api
Web api
 
REST-API introduction for developers
REST-API introduction for developersREST-API introduction for developers
REST-API introduction for developers
 
ReST (Representational State Transfer) Explained
ReST (Representational State Transfer) ExplainedReST (Representational State Transfer) Explained
ReST (Representational State Transfer) Explained
 
Rest API
Rest APIRest API
Rest API
 
REST & RESTful Web Services
REST & RESTful Web ServicesREST & RESTful Web Services
REST & RESTful Web Services
 
Rest & RESTful WebServices
Rest & RESTful WebServicesRest & RESTful WebServices
Rest & RESTful WebServices
 
Api presentation
Api presentationApi presentation
Api presentation
 
Restful web services ppt
Restful web services pptRestful web services ppt
Restful web services ppt
 
What is an API?
What is an API?What is an API?
What is an API?
 
Introduction to API
Introduction to APIIntroduction to API
Introduction to API
 
Soap vs rest
Soap vs restSoap vs rest
Soap vs rest
 
Express JS Rest API Tutorial
Express JS Rest API TutorialExpress JS Rest API Tutorial
Express JS Rest API Tutorial
 
API Design- Best Practices
API Design-   Best PracticesAPI Design-   Best Practices
API Design- Best Practices
 
Spring Web Services: SOAP vs. REST
Spring Web Services: SOAP vs. RESTSpring Web Services: SOAP vs. REST
Spring Web Services: SOAP vs. REST
 
Node.js Express
Node.js  ExpressNode.js  Express
Node.js Express
 
ASP.NET Web API
ASP.NET Web APIASP.NET Web API
ASP.NET Web API
 

Similar to Understanding REST

Web Tech Java Servlet Update1
Web Tech   Java Servlet Update1Web Tech   Java Servlet Update1
Web Tech Java Servlet Update1
vikram singh
 
An Introduction To Java Web Technology
An Introduction To Java Web TechnologyAn Introduction To Java Web Technology
An Introduction To Java Web Technology
vikram singh
 

Similar to Understanding REST (20)

Introduction To REST
Introduction To RESTIntroduction To REST
Introduction To REST
 
REST library.pptx
REST library.pptxREST library.pptx
REST library.pptx
 
ReSTful API Final
ReSTful API FinalReSTful API Final
ReSTful API Final
 
[2015/2016] The REST architectural style
[2015/2016] The REST architectural style[2015/2016] The REST architectural style
[2015/2016] The REST architectural style
 
Web Tech Java Servlet Update1
Web Tech   Java Servlet Update1Web Tech   Java Servlet Update1
Web Tech Java Servlet Update1
 
Restful web-services
Restful web-servicesRestful web-services
Restful web-services
 
An Introduction To Java Web Technology
An Introduction To Java Web TechnologyAn Introduction To Java Web Technology
An Introduction To Java Web Technology
 
Introduction to Rest Protocol
Introduction to Rest ProtocolIntroduction to Rest Protocol
Introduction to Rest Protocol
 
Restful web services
Restful web servicesRestful web services
Restful web services
 
JAX-RS. Developing RESTful APIs with Java
JAX-RS. Developing RESTful APIs with JavaJAX-RS. Developing RESTful APIs with Java
JAX-RS. Developing RESTful APIs with Java
 
The Rest Architectural Style
The Rest Architectural StyleThe Rest Architectural Style
The Rest Architectural Style
 
Salesforce REST API
Salesforce  REST API Salesforce  REST API
Salesforce REST API
 
Ellerslie User Group - ReST Presentation
Ellerslie User Group - ReST PresentationEllerslie User Group - ReST Presentation
Ellerslie User Group - ReST Presentation
 
What are restful web services?
What are restful web services?What are restful web services?
What are restful web services?
 
ROA.ppt
ROA.pptROA.ppt
ROA.ppt
 
RESTful Services
RESTful ServicesRESTful Services
RESTful Services
 
Lecture 12
Lecture 12Lecture 12
Lecture 12
 
Best Practices in Api Design
Best Practices in Api DesignBest Practices in Api Design
Best Practices in Api Design
 
SFDC REST API
SFDC REST APISFDC REST API
SFDC REST API
 
Resource-Oriented Web Services
Resource-Oriented Web ServicesResource-Oriented Web Services
Resource-Oriented Web Services
 

Recently uploaded

Tales from a Passkey Provider Progress from Awareness to Implementation.pptx
Tales from a Passkey Provider  Progress from Awareness to Implementation.pptxTales from a Passkey Provider  Progress from Awareness to Implementation.pptx
Tales from a Passkey Provider Progress from Awareness to Implementation.pptx
FIDO Alliance
 
“Iamnobody89757” Understanding the Mysterious of Digital Identity.pdf
“Iamnobody89757” Understanding the Mysterious of Digital Identity.pdf“Iamnobody89757” Understanding the Mysterious of Digital Identity.pdf
“Iamnobody89757” Understanding the Mysterious of Digital Identity.pdf
Muhammad Subhan
 
TrustArc Webinar - Unified Trust Center for Privacy, Security, Compliance, an...
TrustArc Webinar - Unified Trust Center for Privacy, Security, Compliance, an...TrustArc Webinar - Unified Trust Center for Privacy, Security, Compliance, an...
TrustArc Webinar - Unified Trust Center for Privacy, Security, Compliance, an...
TrustArc
 
Harnessing Passkeys in the Battle Against AI-Powered Cyber Threats.pptx
Harnessing Passkeys in the Battle Against AI-Powered Cyber Threats.pptxHarnessing Passkeys in the Battle Against AI-Powered Cyber Threats.pptx
Harnessing Passkeys in the Battle Against AI-Powered Cyber Threats.pptx
FIDO Alliance
 

Recently uploaded (20)

Extensible Python: Robustness through Addition - PyCon 2024
Extensible Python: Robustness through Addition - PyCon 2024Extensible Python: Robustness through Addition - PyCon 2024
Extensible Python: Robustness through Addition - PyCon 2024
 
Tales from a Passkey Provider Progress from Awareness to Implementation.pptx
Tales from a Passkey Provider  Progress from Awareness to Implementation.pptxTales from a Passkey Provider  Progress from Awareness to Implementation.pptx
Tales from a Passkey Provider Progress from Awareness to Implementation.pptx
 
JavaScript Usage Statistics 2024 - The Ultimate Guide
JavaScript Usage Statistics 2024 - The Ultimate GuideJavaScript Usage Statistics 2024 - The Ultimate Guide
JavaScript Usage Statistics 2024 - The Ultimate Guide
 
Intro in Product Management - Коротко про професію продакт менеджера
Intro in Product Management - Коротко про професію продакт менеджераIntro in Product Management - Коротко про професію продакт менеджера
Intro in Product Management - Коротко про професію продакт менеджера
 
Collecting & Temporal Analysis of Behavioral Web Data - Tales From The Inside
Collecting & Temporal Analysis of Behavioral Web Data - Tales From The InsideCollecting & Temporal Analysis of Behavioral Web Data - Tales From The Inside
Collecting & Temporal Analysis of Behavioral Web Data - Tales From The Inside
 
Generative AI Use Cases and Applications.pdf
Generative AI Use Cases and Applications.pdfGenerative AI Use Cases and Applications.pdf
Generative AI Use Cases and Applications.pdf
 
The Zero-ETL Approach: Enhancing Data Agility and Insight
The Zero-ETL Approach: Enhancing Data Agility and InsightThe Zero-ETL Approach: Enhancing Data Agility and Insight
The Zero-ETL Approach: Enhancing Data Agility and Insight
 
“Iamnobody89757” Understanding the Mysterious of Digital Identity.pdf
“Iamnobody89757” Understanding the Mysterious of Digital Identity.pdf“Iamnobody89757” Understanding the Mysterious of Digital Identity.pdf
“Iamnobody89757” Understanding the Mysterious of Digital Identity.pdf
 
TrustArc Webinar - Unified Trust Center for Privacy, Security, Compliance, an...
TrustArc Webinar - Unified Trust Center for Privacy, Security, Compliance, an...TrustArc Webinar - Unified Trust Center for Privacy, Security, Compliance, an...
TrustArc Webinar - Unified Trust Center for Privacy, Security, Compliance, an...
 
Google I/O Extended 2024 Warsaw
Google I/O Extended 2024 WarsawGoogle I/O Extended 2024 Warsaw
Google I/O Extended 2024 Warsaw
 
Design and Development of a Provenance Capture Platform for Data Science
Design and Development of a Provenance Capture Platform for Data ScienceDesign and Development of a Provenance Capture Platform for Data Science
Design and Development of a Provenance Capture Platform for Data Science
 
Harnessing Passkeys in the Battle Against AI-Powered Cyber Threats.pptx
Harnessing Passkeys in the Battle Against AI-Powered Cyber Threats.pptxHarnessing Passkeys in the Battle Against AI-Powered Cyber Threats.pptx
Harnessing Passkeys in the Battle Against AI-Powered Cyber Threats.pptx
 
Human Expert Website Manual WCAG 2.0 2.1 2.2 Audit - Digital Accessibility Au...
Human Expert Website Manual WCAG 2.0 2.1 2.2 Audit - Digital Accessibility Au...Human Expert Website Manual WCAG 2.0 2.1 2.2 Audit - Digital Accessibility Au...
Human Expert Website Manual WCAG 2.0 2.1 2.2 Audit - Digital Accessibility Au...
 
Vector Search @ sw2con for slideshare.pptx
Vector Search @ sw2con for slideshare.pptxVector Search @ sw2con for slideshare.pptx
Vector Search @ sw2con for slideshare.pptx
 
Event-Driven Architecture Masterclass: Integrating Distributed Data Stores Ac...
Event-Driven Architecture Masterclass: Integrating Distributed Data Stores Ac...Event-Driven Architecture Masterclass: Integrating Distributed Data Stores Ac...
Event-Driven Architecture Masterclass: Integrating Distributed Data Stores Ac...
 
Using IESVE for Room Loads Analysis - UK & Ireland
Using IESVE for Room Loads Analysis - UK & IrelandUsing IESVE for Room Loads Analysis - UK & Ireland
Using IESVE for Room Loads Analysis - UK & Ireland
 
Introduction to FIDO Authentication and Passkeys.pptx
Introduction to FIDO Authentication and Passkeys.pptxIntroduction to FIDO Authentication and Passkeys.pptx
Introduction to FIDO Authentication and Passkeys.pptx
 
Choosing the Right FDO Deployment Model for Your Application _ Geoffrey at In...
Choosing the Right FDO Deployment Model for Your Application _ Geoffrey at In...Choosing the Right FDO Deployment Model for Your Application _ Geoffrey at In...
Choosing the Right FDO Deployment Model for Your Application _ Geoffrey at In...
 
Event-Driven Architecture Masterclass: Engineering a Robust, High-performance...
Event-Driven Architecture Masterclass: Engineering a Robust, High-performance...Event-Driven Architecture Masterclass: Engineering a Robust, High-performance...
Event-Driven Architecture Masterclass: Engineering a Robust, High-performance...
 
Design Guidelines for Passkeys 2024.pptx
Design Guidelines for Passkeys 2024.pptxDesign Guidelines for Passkeys 2024.pptx
Design Guidelines for Passkeys 2024.pptx
 

Understanding REST

  • 1. RE presentational S tate T ransfer
  • 2. Think of REST this way – when a browser gets and displays the elements which make up an HTML page, it is getting a representation of the current state of that resource .
  • 3. What is wrong with XML/RPC and SOAP ? Roy Fielding feels that using HTTP to piggyback application protocols through firewalls the way XML-RPC and SOAP do is a fundamentally misguided idea. It defeats the idea of having a firewall and results in firewall vendors having to detect the piggybacked protocol in order to protect the system. Since most SOAP applications use HTTP for exactly that purpose, you can see where the conflict between REST and SOAP got started. Fielding feels that if you are going to use HTTP, it should be with HTTP semantics.
  • 4. Resources and Representations The last important bit is the distinction between a resource and its representations.  A resource is the real thing that is being acted upon with a request.  For example, deleting a file from a folder, adding an entry to a blog, or reading the heart rate of a patient.  The data transmitted to and from the resource is a representation of it.  Sometimes the representation can be faithful, such as in a file copy, and sometimes it's just a description, such as the sound of someone's voice. The end effect is that we never send or receive resources, only their representation.  The format of the representation is determined by the content-type.  And the interaction of the representation on the resource is determined by the verb.
  • 5. REST Verbs Let’s explore the four basic verbs (GET, PUT, DELETE, POST) to define application behavior
  • 6. GET The GET verb is used to read a resource .  An important rule of thumb is that a GET operation is safe .  That is, it can be done repeatedly without changing visibly the state of the resource.  This property is very important for various reasons.  First, indexing engines use GET to index the contents of a resource.  So it would be bad if indexing a resource also changed it.  Second, intermediaries, such as proxies, may cache results of a GET operation to accelerate subsequent accesses to the same resource. Let's assume we have an image as a resource at "http://myserver/myphotos/mywedding.img".  We can retrieve this image by doing a GET operation on it: GET http://myserver/myphotos/mywedding.img Similarly, we can also query a complex resource, such as a blog, to get parts of the data: GET http://myserver/myblog/2006-12-25T11:12:05.001Z/comments?query=author:anonymous The GET verb is the fundamental read operation for resources.   All data resources support GET, but not all behavioral resources do. While a GET request cannot have side-effects, it can return only parts of the resource.  This means that GET can act as both a read operation and a query operation .
  • 7. PUT and DELETE The PUT and DELETE verbs allow a request to alter the state of a resource atomically .  For example, if we wanted to change the image of our earlier example, we could upload a new one using the same URI and the PUT verb: PUT http://myserver/myphotos/mywedding.img This operation would indicate to the server that we want to replace the target resource with the contents of our request. Similarly, if we wanted to delete the image, we could use the DELETE verb: DELETE http://myserver/myphotos/mywedding.img This operation states we want the server to delete or reset the target resource. Note that PUT and DELETE apply to the entire resource and not just parts of it.  So, when doing a PUT operation, the entire resource is replaced .  PUT acts on the entire resource!  The same is true for DELETE: DELETE acts on the entire resource! The PUT and DELETE operations are atomic .  If two PUT operations occur simultaneously, one of them will win and determine the final state of the resource.  The same is true when a PUT and DELETE operation occur simultaneously.  Either the resource's final state is updated or it is deleted, but nothing in between.  In the case of two simultaneous DELETE operations, the order does not matter, because deleting a resource again has no effect.
  • 8. POST The POST verb can carry a variety of meanings.   It's the Swiss Army Knife of HTTP verbs.  For some resources, it may be used to alter the internal state.  For others, it's behavior may be that of a remote procedure call ( http://en.wikipedia.org/wiki/Remote_procedure_call ). In the example of our blog, we could add a new blog by using the POST verb: POST http://myserver/myblog The POST operation is very generic and no specific meaning can be attached to it.  In general, use POST when only a subset of a resource needs to be modified and it cannot be accessed as its own resource; or when the equivalent of a method call must be exposed.
  • 9. First of all a web service needs a communication channel . You need to be able to ask something to the service and the web service then needs to respond. In the REST web service you ask something just by typing a url. In the url you give certain parameters that define which information you want the web service to return to you (just like giving GET variables to a page). If you made the correct web service call, it will respond you with an XML page containing the information you’ve asked. An example: http://www.somecompany.com/webservice/?searchuser=yoursearchstring if the user of the string exists the xml will be something like this: yoursearchstring The web service responds and says, I’ve found a user with that username. You can check the stat=”ok” parameter. If the web service didn’t found a user with your search string it will respond something like this: stat=”fail”, with the error message “User not found”. Your only task, as a programmer, is to catch that xml and parse it to usable data. And that’s all there is to it. Yes, it’s as simple as that. Source --> http://www.bornontheweb.be/2006/03/01/rest-web-service-a-flickr-tutorial/