SlideShare a Scribd company logo
REST(Representational State Transfer)
- SHAILESH SINGH
1. Why so REST FUL?
 Life before REST
 Challenges of HTTP ?
 RMI , SOAP , RPC and HTTP different famous technique to develop web services
2. What is REST? Defined in 2000
 Architects are Made, Not Born
 What REST father Roy Fielding says
 An architecture style is a coordinated set of architectural constraints that restricts the
roles and features of architectural elements . E.g. : UI layer and data layer segregation ,
statelessness , cacheability
 Uniform Interface : Overall system architecture is simplified and the visibility of
interactions is improved
Tradeoff : Degrades efficiency since Information is transferred in a standardised form
rather than one which is specific to application's needs
a. Uniform Interface
 Four interface constraints
● Identification of resources
● Manipulation of resources through representations
● Self descriptive messages
● Hypermedia as the engine of application state (HATEOAS)
b. What is resources
Another way to describe REST is ROA : Resource Oriented Architecture
 Any information that can be named is a resource
 A resource is a conceptual mapping to a set of entities not the entity itself. Such a
mapping can change over time.
 A resource can be a collection of entities too.
 Every resource has a name that uniquely identifies it – the URI
 Think of it like a primary key for each row in a database
 REST doesn't dictate URI choice. Leaves it to the application author.
c.What If?
/getAccount
/getAllAccounts
/searchAccounts
/createDirectory
/updateGroup
/updateGroupName
/findGroupsByDirectory
/verifyAccountEmailAddress
As you move from an action oriented design towards resource oriented design,
thinking of everything as nouns is one of the early challenges to overcome
Identification of Resources
Identification of Resources
d.The Answer
Fundamentally two types of resources:
Collection Resource
/applications
/books
/orders
Instance Resource
/applications/a1b2c3
/books/1235
/orders/abcdef
Question :
Guess REST equivalent for : Transaction.approve and Account.pay
TransactionApproval and AccountPayment
e.Behavior
POST, GET, PUT, DELETE
≠ 1:1
Create, Read, Update, Delete
f. PUT for Create
Identifier is known by the client:
PUT:
Used to create a resource, or overwrite it. While you specify the resources new URL.
For a new resource:
PUT /questions/<new_question> HTTP/1.1
Host: www.example.com/
To overwrite an existing resource:
PUT /questions/<existing_question> HTTP/1.1
Host: www.example.com/
PUT is Idempotent
g.POST as Create
 POST:
Used to modify and update a resource
POST /questions/<existing_question> HTTP/1.1
Host: www.example.com/
Note that the following is an error:
POST /questions/<new_question> HTTP/1.1
Host: www.example.com/
If the URL is not yet created, you should not be using POST to create it while specifying the name. This should result in a 'resource not found'
error because <new question> does not exist yet. You should PUT the <new question> resource on the server first.
You could though do something like this to create a resources using POST:
POST /applications
{
“name”: “Best App Ever”
}
Response:
201 Created
Location: https://api.singh.com/applications/a1b2c3
POST NOT Idempotent -> x++ vs. x=4
4.a. Example/case Studies
 Fine grained CRUD resources Vs Coarse Grained resources:
Like Operation on blog post (“/posts/{post_id}/likes”)
Comment Operation on blog post (“/posts/{post_id}/comments”)
vs
The single coarse grained resource “Post”(/posts/{post_id}” for “liking” or
“commenting”
4.b. Example/case Studies
 Change the Address:
We can update “Customer” address via “Customers/001/Address/KA001/” or
“Address/KA001/”
VS
Design the API around the resources that are based on the business processes and domain events . To
update an existing bank customer’s address, a POST request can be made to “ChangeOfAddress” resource.
Very important to distinguish between resources in REST API and domain entities in a
domain driven design.
4.c HATEOAS
 HATEOAS=Hypermedia As The Engine Of Application State
Path is the hierarchical and the query is the non-hierarchical part of the URIs.
! Magic awesome sauce to improve REST!
According to the HATEOAS constraint your client has to follow hyperlinks sent by
the service. Those hyperlinks must be annotated with metadata regarding the
semantics of them
HATEOAS constrain
 A REST client enters a REST application through a simple fixed URL. All future actions the client may take are discovered within resource representations
returned from the server.
 E.g:
Request
GET /account/12345
HTTP/1.1 Host: somebank.org
Accept: application/xml
Response:
HTTP/1.1 200 OK
Content-Type: application/xml
Content-Length: ...
<?xml version="1.0"?>
<account>
<account_number>12345</account_number>
<balance currency="usd">100.00</balance>
<link rel="deposit" href="https://somebank.org/account/12345/deposit" />
<link rel="withdraw" href="https://somebank.org/account/12345/withdraw" />
<link rel="transfer" href="https://somebank.org/account/12345/transfer" />
<link rel="close" href="https://somebank.org/account/12345/close" />
</account>
Later Response:
HTTP/1.1 200 OK
Content-Type: application/xml
Content-Length: ...
<?xml version="1.0"?>
<account>
<account_number>12345</account_number>
<balance currency="usd">-25.00</balance>
<link rel="deposit" href="https://somebank.org/account/12345/deposit" />
</account>
Book Flight Ticket
Get Flight Search Result
Confirm a Flight
Payment still Pending
Payment
Fetch E-Ticket
Worked examples
How to GET a Cup of Coffee by Jim Webber, Savas
Parastatidis & Ian Robinson Oct 02, 2008
http://www.infoq.com/articles/webber-rest-workflow
Questions
http://petstore.swagger.io/
http://start.spring.io/

More Related Content

PPTX
HATEOAS 101 - Opinionated Introduction to a REST API Style
PDF
How to Develop a Rich, Native-quality User Experience for Mobile Using Web St...
PPT
Java EE and Spring Side-by-Side
PPTX
API Design - 3rd Edition
PPTX
RESTful Web Services
ODP
Attacking REST API
PPTX
Spring Social - Messaging Friends & Influencing People
PDF
Java Web Programming on Google Cloud Platform [1/3] : Google App Engine
HATEOAS 101 - Opinionated Introduction to a REST API Style
How to Develop a Rich, Native-quality User Experience for Mobile Using Web St...
Java EE and Spring Side-by-Side
API Design - 3rd Edition
RESTful Web Services
Attacking REST API
Spring Social - Messaging Friends & Influencing People
Java Web Programming on Google Cloud Platform [1/3] : Google App Engine

What's hot (20)

PPTX
The glory of REST in Java: Spring HATEOAS, RAML, Temenos IRIS
PDF
HTML5 and the dawn of rich mobile web applications
PPT
Java EE 6 & Spring: A Lover's Quarrel
PPTX
Best practices for RESTful web service design
PPTX
Hypermedia APIs
PPT
Understanding REST
PPTX
Sherlock Homepage - A detective story about running large web services (VISUG...
PPTX
Benefits of Hypermedia API
PPT
The RESTful Soa Datagrid with Oracle
PDF
Indic threads delhi13-rest-anirudh
PDF
Spring 4.3-component-design
PDF
Java Web Application Security with Java EE, Spring Security and Apache Shiro ...
PDF
Reactjs Basics
PDF
StrongLoop Node.js API Security & Customization
PDF
What the Heck is OAuth and OpenID Connect? Connect.Tech 2017
PDF
Remote code-with-expression-language-injection
PDF
Introduction to rest.li
PDF
Modern Security with OAuth 2.0 and JWT and Spring by Dmitry Buzdin
PDF
Getting Started with WebSocket and Server-Sent Events in Java
PDF
Spring boot jpa
The glory of REST in Java: Spring HATEOAS, RAML, Temenos IRIS
HTML5 and the dawn of rich mobile web applications
Java EE 6 & Spring: A Lover's Quarrel
Best practices for RESTful web service design
Hypermedia APIs
Understanding REST
Sherlock Homepage - A detective story about running large web services (VISUG...
Benefits of Hypermedia API
The RESTful Soa Datagrid with Oracle
Indic threads delhi13-rest-anirudh
Spring 4.3-component-design
Java Web Application Security with Java EE, Spring Security and Apache Shiro ...
Reactjs Basics
StrongLoop Node.js API Security & Customization
What the Heck is OAuth and OpenID Connect? Connect.Tech 2017
Remote code-with-expression-language-injection
Introduction to rest.li
Modern Security with OAuth 2.0 and JWT and Spring by Dmitry Buzdin
Getting Started with WebSocket and Server-Sent Events in Java
Spring boot jpa
Ad

Viewers also liked (20)

PPTX
Why Use “REST” Architecture for Web Services?
PDF
JavaEE and RESTful development - WSO2 Colombo Meetup
DOCX
42121093
DOCX
ประวัติ
PDF
Sweet vengeance script
PPTX
Plan clase
DOCX
ซื่อสัตย์
DOCX
ประวัติส่วนตัว มล
DOCX
กิจกรรม 59 2
PPTX
Portfolio
PPT
Medios didáctic os tecnologico
PDF
Dwi yustiani hapzi ali_strategi pemasaran_2017
PDF
Why HATEOAS
DOC
Resume
PPTX
Modul 3 kb 2 keperawatan bencana pada anak
PPSX
Rest api standards and best practices
PDF
Henry gilbert robin hood
PDF
No REST - Architecting Real-time Bulk Async APIs
PPT
REST Presentation
Why Use “REST” Architecture for Web Services?
JavaEE and RESTful development - WSO2 Colombo Meetup
42121093
ประวัติ
Sweet vengeance script
Plan clase
ซื่อสัตย์
ประวัติส่วนตัว มล
กิจกรรม 59 2
Portfolio
Medios didáctic os tecnologico
Dwi yustiani hapzi ali_strategi pemasaran_2017
Why HATEOAS
Resume
Modul 3 kb 2 keperawatan bencana pada anak
Rest api standards and best practices
Henry gilbert robin hood
No REST - Architecting Real-time Bulk Async APIs
REST Presentation
Ad

Similar to REST Architecture with use case and example (20)

PPTX
A Deep Dive into RESTful API Design Part 1
PDF
REST Basics
PPTX
REST and RESTful Services
PPTX
L18 REST API Design
PPTX
Overview of REST - Raihan Ullah
PPTX
RESTful services
PDF
[2015/2016] The REST architectural style
PDF
Java Web Services [5/5]: REST and JAX-RS
PPTX
RESTful APIs
PPT
Treinamento 1
PPTX
JAX-RS. Developing RESTful APIs with Java
PDF
PPTX
RestfulDesignRules
PDF
Applications of the REST Principle
PDF
Rest web services
PDF
-overview of res tful architecture-2
PPTX
RESTful Web Services
PDF
Restful Services
PPTX
REST & RESTful APIs: The State of Confusion
PPTX
Lecture 12
A Deep Dive into RESTful API Design Part 1
REST Basics
REST and RESTful Services
L18 REST API Design
Overview of REST - Raihan Ullah
RESTful services
[2015/2016] The REST architectural style
Java Web Services [5/5]: REST and JAX-RS
RESTful APIs
Treinamento 1
JAX-RS. Developing RESTful APIs with Java
RestfulDesignRules
Applications of the REST Principle
Rest web services
-overview of res tful architecture-2
RESTful Web Services
Restful Services
REST & RESTful APIs: The State of Confusion
Lecture 12

Recently uploaded (20)

PPTX
breach-and-attack-simulation-cybersecurity-india-chennai-defenderrabbit-2025....
PPTX
MYSQL Presentation for SQL database connectivity
PDF
Dropbox Q2 2025 Financial Results & Investor Presentation
PPTX
CroxyProxy Instagram Access id login.pptx
PDF
Advanced IT Governance
PDF
Smarter Business Operations Powered by IoT Remote Monitoring
PDF
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
PDF
How Onsite IT Support Drives Business Efficiency, Security, and Growth.pdf
PDF
Transforming Manufacturing operations through Intelligent Integrations
PDF
CIFDAQ's Market Insight: SEC Turns Pro Crypto
PDF
KodekX | Application Modernization Development
PDF
Event Presentation Google Cloud Next Extended 2025
PDF
cuic standard and advanced reporting.pdf
PDF
Review of recent advances in non-invasive hemoglobin estimation
PDF
madgavkar20181017ppt McKinsey Presentation.pdf
PDF
GDG Cloud Iasi [PUBLIC] Florian Blaga - Unveiling the Evolution of Cybersecur...
PDF
DevOps & Developer Experience Summer BBQ
PDF
Modernizing your data center with Dell and AMD
PDF
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
PPT
“AI and Expert System Decision Support & Business Intelligence Systems”
breach-and-attack-simulation-cybersecurity-india-chennai-defenderrabbit-2025....
MYSQL Presentation for SQL database connectivity
Dropbox Q2 2025 Financial Results & Investor Presentation
CroxyProxy Instagram Access id login.pptx
Advanced IT Governance
Smarter Business Operations Powered by IoT Remote Monitoring
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
How Onsite IT Support Drives Business Efficiency, Security, and Growth.pdf
Transforming Manufacturing operations through Intelligent Integrations
CIFDAQ's Market Insight: SEC Turns Pro Crypto
KodekX | Application Modernization Development
Event Presentation Google Cloud Next Extended 2025
cuic standard and advanced reporting.pdf
Review of recent advances in non-invasive hemoglobin estimation
madgavkar20181017ppt McKinsey Presentation.pdf
GDG Cloud Iasi [PUBLIC] Florian Blaga - Unveiling the Evolution of Cybersecur...
DevOps & Developer Experience Summer BBQ
Modernizing your data center with Dell and AMD
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
“AI and Expert System Decision Support & Business Intelligence Systems”

REST Architecture with use case and example

  • 2. 1. Why so REST FUL?  Life before REST  Challenges of HTTP ?  RMI , SOAP , RPC and HTTP different famous technique to develop web services
  • 3. 2. What is REST? Defined in 2000  Architects are Made, Not Born  What REST father Roy Fielding says  An architecture style is a coordinated set of architectural constraints that restricts the roles and features of architectural elements . E.g. : UI layer and data layer segregation , statelessness , cacheability  Uniform Interface : Overall system architecture is simplified and the visibility of interactions is improved Tradeoff : Degrades efficiency since Information is transferred in a standardised form rather than one which is specific to application's needs
  • 4. a. Uniform Interface  Four interface constraints ● Identification of resources ● Manipulation of resources through representations ● Self descriptive messages ● Hypermedia as the engine of application state (HATEOAS)
  • 5. b. What is resources Another way to describe REST is ROA : Resource Oriented Architecture  Any information that can be named is a resource  A resource is a conceptual mapping to a set of entities not the entity itself. Such a mapping can change over time.  A resource can be a collection of entities too.  Every resource has a name that uniquely identifies it – the URI  Think of it like a primary key for each row in a database  REST doesn't dictate URI choice. Leaves it to the application author.
  • 6. c.What If? /getAccount /getAllAccounts /searchAccounts /createDirectory /updateGroup /updateGroupName /findGroupsByDirectory /verifyAccountEmailAddress As you move from an action oriented design towards resource oriented design, thinking of everything as nouns is one of the early challenges to overcome
  • 9. d.The Answer Fundamentally two types of resources: Collection Resource /applications /books /orders Instance Resource /applications/a1b2c3 /books/1235 /orders/abcdef Question : Guess REST equivalent for : Transaction.approve and Account.pay TransactionApproval and AccountPayment
  • 10. e.Behavior POST, GET, PUT, DELETE ≠ 1:1 Create, Read, Update, Delete
  • 11. f. PUT for Create Identifier is known by the client: PUT: Used to create a resource, or overwrite it. While you specify the resources new URL. For a new resource: PUT /questions/<new_question> HTTP/1.1 Host: www.example.com/ To overwrite an existing resource: PUT /questions/<existing_question> HTTP/1.1 Host: www.example.com/ PUT is Idempotent
  • 12. g.POST as Create  POST: Used to modify and update a resource POST /questions/<existing_question> HTTP/1.1 Host: www.example.com/ Note that the following is an error: POST /questions/<new_question> HTTP/1.1 Host: www.example.com/ If the URL is not yet created, you should not be using POST to create it while specifying the name. This should result in a 'resource not found' error because <new question> does not exist yet. You should PUT the <new question> resource on the server first. You could though do something like this to create a resources using POST: POST /applications { “name”: “Best App Ever” } Response: 201 Created Location: https://api.singh.com/applications/a1b2c3 POST NOT Idempotent -> x++ vs. x=4
  • 13. 4.a. Example/case Studies  Fine grained CRUD resources Vs Coarse Grained resources: Like Operation on blog post (“/posts/{post_id}/likes”) Comment Operation on blog post (“/posts/{post_id}/comments”) vs The single coarse grained resource “Post”(/posts/{post_id}” for “liking” or “commenting”
  • 14. 4.b. Example/case Studies  Change the Address: We can update “Customer” address via “Customers/001/Address/KA001/” or “Address/KA001/” VS Design the API around the resources that are based on the business processes and domain events . To update an existing bank customer’s address, a POST request can be made to “ChangeOfAddress” resource. Very important to distinguish between resources in REST API and domain entities in a domain driven design.
  • 15. 4.c HATEOAS  HATEOAS=Hypermedia As The Engine Of Application State Path is the hierarchical and the query is the non-hierarchical part of the URIs. ! Magic awesome sauce to improve REST! According to the HATEOAS constraint your client has to follow hyperlinks sent by the service. Those hyperlinks must be annotated with metadata regarding the semantics of them
  • 16. HATEOAS constrain  A REST client enters a REST application through a simple fixed URL. All future actions the client may take are discovered within resource representations returned from the server.  E.g: Request GET /account/12345 HTTP/1.1 Host: somebank.org Accept: application/xml Response: HTTP/1.1 200 OK Content-Type: application/xml Content-Length: ... <?xml version="1.0"?> <account> <account_number>12345</account_number> <balance currency="usd">100.00</balance> <link rel="deposit" href="https://somebank.org/account/12345/deposit" /> <link rel="withdraw" href="https://somebank.org/account/12345/withdraw" /> <link rel="transfer" href="https://somebank.org/account/12345/transfer" /> <link rel="close" href="https://somebank.org/account/12345/close" /> </account> Later Response: HTTP/1.1 200 OK Content-Type: application/xml Content-Length: ... <?xml version="1.0"?> <account> <account_number>12345</account_number> <balance currency="usd">-25.00</balance> <link rel="deposit" href="https://somebank.org/account/12345/deposit" /> </account>
  • 23. Worked examples How to GET a Cup of Coffee by Jim Webber, Savas Parastatidis & Ian Robinson Oct 02, 2008 http://www.infoq.com/articles/webber-rest-workflow