192
REST Explained Representational State Transfer Dhananjay Nene July 4, 2009 TechWeekend – Pune http://blog.dhananjaynene.com http://twitter.com/dnene

ReST (Representational State Transfer) Explained

Embed Size (px)

DESCRIPTION

A long presentation on a variety of aspects of REST.

Citation preview

Page 1: ReST (Representational State Transfer) Explained

REST ExplainedRepresentational State Transfer

Dhananjay NeneJuly 4, 2009

TechWeekend – Pune

http://blog.dhananjaynene.com http://twitter.com/dnene

Page 2: ReST (Representational State Transfer) Explained

What REST is not !

Page 3: ReST (Representational State Transfer) Explained

REST is not a ..

framework

Page 4: ReST (Representational State Transfer) Explained

REST is not a ..

technology

Page 5: ReST (Representational State Transfer) Explained

REST is not a ..

a standards specification

Page 6: ReST (Representational State Transfer) Explained

REST is an architecture style

Page 7: ReST (Representational State Transfer) Explained

.. as documented and described by Roy Fielding ..

Page 8: ReST (Representational State Transfer) Explained

.. which specifies a set of architecture constraints.

Page 9: ReST (Representational State Transfer) Explained

Fielding on Architecture Style

● An architecture style is a coordinated set of architectural constraints that restricts the roles and features of architectural elements, and the allowed relationships between those elements, within any architecture that conforms to that style● A style can be applied to many architectures● An architecture can consist of many styles

Page 10: ReST (Representational State Transfer) Explained

Architecture Constraint 1

Client - Server

Page 11: ReST (Representational State Transfer) Explained

Client Server

Separates user interface concerns from data storage concerns

Page 12: ReST (Representational State Transfer) Explained

Client Server

Improves portability of interface across multiple platforms

Page 13: ReST (Representational State Transfer) Explained

Client Server

Improves scalability by simplifying server components

Page 14: ReST (Representational State Transfer) Explained

Client Server

Allows the components to evolve independently

Page 15: ReST (Representational State Transfer) Explained

Architecture Constraint 2

StatelessnessNo Client State

Page 16: ReST (Representational State Transfer) Explained

Statelessness

Each request from client to server must contain all of the information necessary to understand the request and cannot take any advantage of any

stored context on the server.

and

Each request contains all of the information necessary for a connector to understand the

request, independent of any requests that may have preceded it

Page 17: ReST (Representational State Transfer) Explained

Statelessness

Session state is therefore kept entirely on the client

Page 18: ReST (Representational State Transfer) Explained

Statelessness

Improved visibility since a monitoring system does not have to look beyond a single request

Page 19: ReST (Representational State Transfer) Explained

Statelessness

Improved reliability due to easier recoverability from partial failures

Page 20: ReST (Representational State Transfer) Explained

Statelessness

Improved scalability due to not having to allocate resources for storing state

Page 21: ReST (Representational State Transfer) Explained

Statelessness

Server does not have to manage resource usage across requests

Page 22: ReST (Representational State Transfer) Explained

Statelessness

Tradeoff : Reduced Network Performance

Page 23: ReST (Representational State Transfer) Explained

Statelessness

Tradeoff : Reduced server control over application consistency

Page 24: ReST (Representational State Transfer) Explained

Statelessness is one of the most difficult to deal with constraints

(but more on that later)

Page 25: ReST (Representational State Transfer) Explained

Architecture Constraint 3

Specified Cacheability

Page 26: ReST (Representational State Transfer) Explained

Specified Cacheability

Data within a response to a request be implicitly or explicitly labeled as cacheable or non-

cacheable

Page 27: ReST (Representational State Transfer) Explained

Specified Cacheability

If a response is cacheable, then a client cache is given the right to reuse that response data for

later, equivalent requests

Page 28: ReST (Representational State Transfer) Explained

Specified Cacheability

Improves efficiency, scalability and user perceived performance

Page 29: ReST (Representational State Transfer) Explained

Specified Cacheability

Tradeoff : Reduced Reliability

Page 30: ReST (Representational State Transfer) Explained

Architecture Constraint 4

Uniform Interface

Page 31: ReST (Representational State Transfer) Explained

Uniform Interface

Overall system architecture is simplified and the visibility of interactions is improved

Page 32: ReST (Representational State Transfer) Explained

Uniform Interface

Implementations are decoupled from the services they provide and encourage independent

evolvability

Page 33: ReST (Representational State Transfer) Explained

Uniform Interface

Tradeoff : Degrades efficiency

since Information is transferred in a standardised form rather than one which is specific to application's needs

Page 34: ReST (Representational State Transfer) Explained

Uniform Interface

● Identification of resources● Manipulation of resources through

representations● Self descriptive messages● Hypermedia as the engine of application state

(HATEOAS)

Four interface constraints(more later .. we shall be spending the maximum time on this)

Page 35: ReST (Representational State Transfer) Explained

Architecture Constraint 5

Layered System

Page 36: ReST (Representational State Transfer) Explained

Layered System

Places a bound on overall system complexity

Page 37: ReST (Representational State Transfer) Explained

Layered System

Promotes substrate independence

Page 38: ReST (Representational State Transfer) Explained

Layered System

Can be used to encapsulate legacy services or protect new services from legacy clients

Page 39: ReST (Representational State Transfer) Explained

Layered System

Intermediaries can be used to improve system scalability by enabling load balancing

Page 40: ReST (Representational State Transfer) Explained

Layered System

Tradeoff : Add overhead and latency and reduce user perceived performance

Page 41: ReST (Representational State Transfer) Explained

Layered System

Placing shared caches at boundaries of organisational domain can result in significant benefits. Can also enforce security policies eg.

firewalls

Page 42: ReST (Representational State Transfer) Explained

Layered System

Intermediaries can actively transform message content since messages are self descriptive and their semantics are visible to the intermediaries

Page 43: ReST (Representational State Transfer) Explained

Architecture Constraint 5

Code on demand(is an optional constraint)

Page 44: ReST (Representational State Transfer) Explained

Code on demand

Client functionality can be extended by downloading and executing code in the form of

applets or scripts

Page 45: ReST (Representational State Transfer) Explained

Lets get back to .. and explore in far more detail ..

Page 46: ReST (Representational State Transfer) Explained

Interface constraints of ReST

Page 47: ReST (Representational State Transfer) Explained

Resources

Page 48: ReST (Representational State Transfer) Explained

Resources

What are resources ?

Page 49: ReST (Representational State Transfer) Explained

Any information that can be named is a resource

Page 50: ReST (Representational State Transfer) Explained

A resource is a conceptual mapping to a set of entities not the entity itself. Such a mapping can

change over time.

Page 51: ReST (Representational State Transfer) Explained

This presentation is a resource

Page 52: ReST (Representational State Transfer) Explained

As is this presentation's latest version (if I am regularly backing it up to different files)

Page 53: ReST (Representational State Transfer) Explained

All available presentations on ReST is also a resource. A resource can be a collection of

entities too.

Page 54: ReST (Representational State Transfer) Explained

Resource Identifiers

Page 55: ReST (Representational State Transfer) Explained

Every resource has a name that uniquely identifies it – the URI

Page 56: ReST (Representational State Transfer) Explained

Names don't change(at least not frequently)

Page 57: ReST (Representational State Transfer) Explained

Think of it like a primary key for each row in a database

http://informationbase/locationdb/citiestable/pune

Page 58: ReST (Representational State Transfer) Explained

REST doesn't dictate URI choice.Leaves it to the application author.

Page 59: ReST (Representational State Transfer) Explained

The URI should generally carry no meaning to the client except as a resource locator

Page 60: ReST (Representational State Transfer) Explained

However don't let that encourage you to name URIs arbitrarily and confusingly

Page 61: ReST (Representational State Transfer) Explained

Good, clean, structured URIs are helpful for developers

Page 62: ReST (Representational State Transfer) Explained

If you are naming a specific single resource all the information to locate the resource should be in the URI itself and not through additional parameters

Page 63: ReST (Representational State Transfer) Explained

eg. choosehttp://informationbase/locationdb/citiestable/pune

nothttp://informationbase/locator?type=city&name=pune

Page 64: ReST (Representational State Transfer) Explained

However optional parameters for identifying subsets of resources are conventionally

acceptable

Page 65: ReST (Representational State Transfer) Explained

eg.http://ibase/cities?startswith=pu&start=11&count=10

Page 66: ReST (Representational State Transfer) Explained

Resources have Representations

Page 67: ReST (Representational State Transfer) Explained

A representation captures the current or intended state of a resource

Page 68: ReST (Representational State Transfer) Explained

Resources are transferred between the client and the server

Page 69: ReST (Representational State Transfer) Explained

Resources may include metadata describing themselves

Page 70: ReST (Representational State Transfer) Explained

A particular resource may have multiple representations

Page 71: ReST (Representational State Transfer) Explained

Commonly used representation formats are html, xml and json

however they could also be pdf, png etc.

Page 72: ReST (Representational State Transfer) Explained

When multiple resource formats are supported by the server, the actual resource format returned is subject to content negotiation between the client

and the server

Page 73: ReST (Representational State Transfer) Explained

This should ideally happen through control data i.e. By using HTTP “Accept” headers and not by

appending additional information to the URL.

PreferAccept: text/xml;q=0.5, application/json

http://infobase/cities/pune

to

http://infobase/cities/pune.json

Page 74: ReST (Representational State Transfer) Explained

REST doesn't dictate or constrain you to using particular representation formats. Use what suits

the application context the best.

Page 75: ReST (Representational State Transfer) Explained

Interface constraint 3

Self descriptive messages

Page 76: ReST (Representational State Transfer) Explained

Requests and responses contain inband description about the schema it adopts

Page 77: ReST (Representational State Transfer) Explained

This is done by describing the XML Schema for the representation (or its units) using the same by declaring its appropriate XML namespace. Further

clarity can be introduced by using a custom “application/vnd.*****” Content-Type header.

Page 78: ReST (Representational State Transfer) Explained

The entire schema does not need to be known upfront. Only the mandatory and relevant parts

need to be known.

Page 79: ReST (Representational State Transfer) Explained

The schema can continue to be extended without client modifications if it is only adding optional

elements or attributes.

Page 80: ReST (Representational State Transfer) Explained

Intermediate layers can both parse and transform messages intelligently

Page 81: ReST (Representational State Transfer) Explained

Metadata helps both page and form rendering and client side validations could be introduced based

on an understanding of the schema and its semantics

Page 82: ReST (Representational State Transfer) Explained

Interface constraint 4

Hypermedia as the engine of application state(HATEOAS)

Page 83: ReST (Representational State Transfer) Explained

Hypermedia

Hypermedia is used as a logical extension of the term hypertext in which graphics, audio, video, plain text and hyperlinks intertwine to create a generally non-linear medium of information.

source : Wikipedia

Page 84: ReST (Representational State Transfer) Explained

HyperText

Simultaneous presentation of information and controls such that the information becomes the

affordance through which the user obtains choices and selects actions

- Roy Fielding

Page 85: ReST (Representational State Transfer) Explained

Application State

state that determines "where" the user is in the process of completing a task

It is not the resource or state of the resource on the server

Page 86: ReST (Representational State Transfer) Explained

To understand application state, you need to visualise the pages / resources of the application

as a wireframe model or a state machine and each page as a state

Page 87: ReST (Representational State Transfer) Explained

Each state allows for only a few valid triggers to allow it to navigate to another state

Page 88: ReST (Representational State Transfer) Explained

These possible navigations out of the state can be embedded in the resource representation

overlying the state by using hypertext (links)

Page 89: ReST (Representational State Transfer) Explained

Since each state self describes the possible links given the context, the client can choose to select

the appropriate link by examining the link metadata.

Page 90: ReST (Representational State Transfer) Explained

To put it differently

Make hypermedia constrain client choices, and the client choice influences the application state

Page 91: ReST (Representational State Transfer) Explained

Therefore :Hypermedia as the engine of application state

Page 92: ReST (Representational State Transfer) Explained

Client needs to know only the starting URL

Page 93: ReST (Representational State Transfer) Explained

In addition client needs to be able to understand the mediatypes and semantics associated with the links (ie. What does a link with a particular

“rel” type mean)

Page 94: ReST (Representational State Transfer) Explained

One more aspect of Uniform Interfaces

Page 95: ReST (Representational State Transfer) Explained

Uniform Operations

Page 96: ReST (Representational State Transfer) Explained

In case of database tables, these areInsert, Select, Update, Delete

Page 97: ReST (Representational State Transfer) Explained

In common parlance these areCreate, Read, Update, Delete (CRUD)

Page 98: ReST (Representational State Transfer) Explained

In REST over HTTP these arePOST, GET, PUT, DELETE

Page 99: ReST (Representational State Transfer) Explained

Those are the only verbs you need

Page 100: ReST (Representational State Transfer) Explained

Simplifies semantics

Page 101: ReST (Representational State Transfer) Explained

Simplifies client complexity

Page 102: ReST (Representational State Transfer) Explained

Simplifies application model

Page 103: ReST (Representational State Transfer) Explained

Clients interact with REST based systems by sequentially performing one of POST, GET, PUT, DELETE operations on self describing resources and by traversing the links offered by the server

Page 104: ReST (Representational State Transfer) Explained

For this clients need to understand resource representation schemas (xml schemas) and ...

Page 105: ReST (Representational State Transfer) Explained

Client need to understand semantics of the relationship types (<link rel=”...”>) offered by the

server

Page 106: ReST (Representational State Transfer) Explained

REST is the DBMS of the internet

Page 107: ReST (Representational State Transfer) Explained

With a slight caveat

Page 108: ReST (Representational State Transfer) Explained

It doesn't break encapsulation

Page 109: ReST (Representational State Transfer) Explained

It exposes resource representations and not resources themselves

Page 110: ReST (Representational State Transfer) Explained

Thats like a parallel set of tables / views that clients can access and which have triggers which

in turn appropriately update the real tables

Page 111: ReST (Representational State Transfer) Explained

Its often much easier and quicker to understand table schemas than it is to understand stored

procedure semantics

Page 112: ReST (Representational State Transfer) Explained

This is an important distinction compared to RPC/SOA based architectures which in case of this analogy would represent stored procedures

Page 113: ReST (Representational State Transfer) Explained

Which is why a client is likely to be far quicker off the starting block if given a set of schemas and

standard SQL semantics to work with rather than a list of stored procedures describing each

procedure, its parameters and the interrelationships between the procedures.

Thats what makes ReST so much easier for its clients and users

Page 114: ReST (Representational State Transfer) Explained

Sample ReST request

Page 115: ReST (Representational State Transfer) Explained

Sample ReST response

Page 116: ReST (Representational State Transfer) Explained

ReST simplifies

Page 117: ReST (Representational State Transfer) Explained

● Hypertext is standardised. Fewer UIs● Identification is standardised. Lesser

communication● Exchange protocols are standardised. Fewer

Integrations● Interactions are standardised. Fewer semantics● Data formats are standardised. Fewer

translations

- Roy Fielding

Page 118: ReST (Representational State Transfer) Explained

No IDLs, WADLs, WSDLs

Page 119: ReST (Representational State Transfer) Explained

No static compilations required

Page 120: ReST (Representational State Transfer) Explained

No methods and what each method means

Page 121: ReST (Representational State Transfer) Explained

No inter method sequencing

Page 122: ReST (Representational State Transfer) Explained

No registries

Page 123: ReST (Representational State Transfer) Explained

When dealing with complex stuff, you always feel,

you can use some rest.

Page 124: ReST (Representational State Transfer) Explained

When you use ReST, things are simpler

Page 125: ReST (Representational State Transfer) Explained

Benefits of REST

- Roy Fielding

Page 126: ReST (Representational State Transfer) Explained

Uniform resources having identifiers increases reuse potential

Page 127: ReST (Representational State Transfer) Explained

Uniform interface hides implementation details supporting low coupling

Page 128: ReST (Representational State Transfer) Explained

Hypertext allows for late binding leading to reduction in attempted inappropriate accesses

and resultant errors

Page 129: ReST (Representational State Transfer) Explained

Server failures don't befuddle client state leading, while shared state is easily recoverable leading to

improved fault tolerance

Page 130: ReST (Representational State Transfer) Explained

Supports gradual and fragmented change across organisations.

Page 131: ReST (Representational State Transfer) Explained

Services can be layered, clustered and cached leading to improved scalability

Page 132: ReST (Representational State Transfer) Explained

ReST extends the very capabilities that made WWW successful into application design and

architecture

Page 133: ReST (Representational State Transfer) Explained

What are these characteristics of static W W W and ReST?

Page 134: ReST (Representational State Transfer) Explained

You can connect to any web server if you know the home page URL

You can connect to ReST application if you know the starting URI

Page 135: ReST (Representational State Transfer) Explained

On the home page you can view the content along with the appropriate hyperlinks which

suggest appropriate paths for you to traverse

The response will provide you important initial content along with hyperlinks which describe their

nature to navigate to other resources

Page 136: ReST (Representational State Transfer) Explained

You can navigate to the next page by clicking on the hyperlink

You can conduct an operation by performing a POST/GET/PUT/DELETE on one of the

suggested URIs

Page 137: ReST (Representational State Transfer) Explained

You can save the hyperlink URL, bookmark it or email it to you boss or tweet it to your friends

A ReST client can store a URI for future use or embed it as a foreign key in other resources that it

maintains

Page 138: ReST (Representational State Transfer) Explained

They will not need to repeat your sequence of steps. They will be able to directly access the

page given the URL.

The receiving ReST client will be able to directly access the earlier stored URI without going

through a sequence of pages

Page 139: ReST (Representational State Transfer) Explained

You can save the contents of any page by saving its HTML representation

You can save the representation of any resource into a XML / Document database

Page 140: ReST (Representational State Transfer) Explained

You can modify the contents of the web pages by entering data in forms (and even full page content

in blogs, Wikis etc.) and POSTing them.

You can perform PUT, POST and DELETE operations on resources to modify them

Page 141: ReST (Representational State Transfer) Explained

You can upload new files by browsing for the file on your desktop and submitting the button on

appropriately configured pages (PUT file)

You can add new resources by conducting the POST operation

Page 142: ReST (Representational State Transfer) Explained

The server retains no information about the pages you've traversed

The server retains no information about you or the pages you've traversed

Page 143: ReST (Representational State Transfer) Explained

The server can send you different media types (eg. HTML, PDF, Videos etc.) by describing these

media types in the headers

The server sends the metadata describing the resource representation inband with the

representation

Page 144: ReST (Representational State Transfer) Explained

Did you notice there is no global internet registry for website discovery ?

There is no registry required for ReST applications

Page 145: ReST (Representational State Transfer) Explained

Yahoo tried, as does Open Directory but it just doesn't work

And it may not for many other architectures requiring registries

Page 146: ReST (Representational State Transfer) Explained

Since the content depends on basic HTML tags and each URL is uniquely addressable, it is easy for search engines to index its content and allow

users to find the required pages

Representations for URIs can be browsed, indexed and eventually searched through

Page 147: ReST (Representational State Transfer) Explained

These are all characteristics that made static www simple to use, deploy and leverage making it

popular and eventually omnipresent

These are also characteristics of ReST contributing to its simplicity and ease of leveraging accounting for its popularity

Page 148: ReST (Representational State Transfer) Explained

Designing ReSTful applications

Page 149: ReST (Representational State Transfer) Explained

Using a ReST supportive framework does not make your application ReSTful

Page 150: ReST (Representational State Transfer) Explained

You need to model your application interfaces as a set of resources

Page 151: ReST (Representational State Transfer) Explained

And basic CRUD operations on these resources

Page 152: ReST (Representational State Transfer) Explained

Since controllers in traditional web frameworks drive the interface, we shall focus on these

Page 153: ReST (Representational State Transfer) Explained

When the interface is meant for browsers, there are some limitations. Hence browser oriented

interfaces are a little different than POST, GET, PUT, DELETE

Page 154: ReST (Representational State Transfer) Explained

Assuming each controller represents a lifecycle manager for a particular resource type, it needs a

few basic methods. And the same methods get reproduced across all such controllers

Page 155: ReST (Representational State Transfer) Explained

Resource URI HTTPMethod

ControllerMethod

Description

/cities GET index Get list of cities (optional params)

/cities POST create Create a new city

/cities/Pune GET show Show pune resource representation

/cities/Pune PUT update Modify pune resource

/cities/Pune DELETE destroy Delete pune resource

/cities/new GET new Initiate a new city resource creation

/cities/Pune;edit GET edit Initiate a new city modification

Page 156: ReST (Representational State Transfer) Explained

No more actions like city.expand (CityExpansion.create) ,

city.holdElections (CityElection.create) etc.

Page 157: ReST (Representational State Transfer) Explained

You will need to create new controllers which represent new nouns representing the action

Page 158: ReST (Representational State Transfer) Explained

Not all controllers will implement all methods. But they should not implement any more methods.

Page 159: ReST (Representational State Transfer) Explained

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

Page 160: ReST (Representational State Transfer) Explained

Transaction.approve becomes TransactionApproval

Account.pay become AccountPayment.create

etc. etc.

Page 161: ReST (Representational State Transfer) Explained

For each resource you need to document the XML Schema and define a mime type

(application/vnd.***)

especially when the consumer is a machine

Page 162: ReST (Representational State Transfer) Explained

For each resource representation you need to list what are the appropriate URIs (application state

transitions) to be returned along with the representations and implement introduction of

these in the controller actions as well

Page 163: ReST (Representational State Transfer) Explained

REST and Security

Page 164: ReST (Representational State Transfer) Explained

This is one area where I choose to be non ReSTful

Page 165: ReST (Representational State Transfer) Explained

Sometimes the deliberate requirements of opaqueness of security and transparency of ReST

don't cooperate well

Page 166: ReST (Representational State Transfer) Explained

Cookies

Cookie interaction fails to match REST's model of application state, often resulting in confusion for

the typical browser application.

- Roy Fielding

Page 167: ReST (Representational State Transfer) Explained

I agree with that .. but ...

Page 168: ReST (Representational State Transfer) Explained

Cookies can help in user identification (other options being Basic HTTP authentication)

Page 169: ReST (Representational State Transfer) Explained

Basic HTTP Authentication is weak

Page 170: ReST (Representational State Transfer) Explained

Computes a hash which can be intercepted and reused later

Page 171: ReST (Representational State Transfer) Explained

If you do use Basic HTTP authentication at the minimum use HTTPS

Page 172: ReST (Representational State Transfer) Explained

But I prefer cookies when they are strictly used for user identification only

Page 173: ReST (Representational State Transfer) Explained

But cookies break the statelessness model

Page 174: ReST (Representational State Transfer) Explained

Yes they do. I prefer to store only the data thats expensive to compute but can be recomputed in

case of loss in the session against the cookie. No storage of conversational state in the session

Page 175: ReST (Representational State Transfer) Explained

That is hard to ensure .. and thats another self imposed architecture constraint

Page 176: ReST (Representational State Transfer) Explained

But I think it is more practical for secure applications

Page 177: ReST (Representational State Transfer) Explained

Even though it takes away their ability of being called 100% ReSTful

Page 178: ReST (Representational State Transfer) Explained

What about alternative architecture styles (SOA) ?

Page 179: ReST (Representational State Transfer) Explained

They are an extension of the RPC construct not the www construct

Page 180: ReST (Representational State Transfer) Explained

They simply do not have most of the benefits I just referred to

Page 181: ReST (Representational State Transfer) Explained

And the hype-engine is really struggling to compete with the wide successes of ReST

Page 182: ReST (Representational State Transfer) Explained

Experience has shown when sites offered both SOA and ReST interfaces, clients quickly ended

up choosing ReST

- sounds intituitive enough to me but do not recollect the source.

Page 183: ReST (Representational State Transfer) Explained

Rest is not SOA

Page 184: ReST (Representational State Transfer) Explained

They both attempt to solve a similar set of problems ....

Page 185: ReST (Representational State Transfer) Explained

.... differently!

Page 186: ReST (Representational State Transfer) Explained

● ReST requires you to think resources not actions or services

● ReST requires you to lay a greater emphasis on documentation of your schema and practically none on the actions

● ReST requires you to provide in band metadata● ReST works very nicely with layered

architectures● Another way to describe ReST is ROA :

Resource Oriented Architecture

Page 187: ReST (Representational State Transfer) Explained

The clear distinctions between ROA and SOA are being blurred for non technical reasons. Be

aware when you read content debating ReST/SOA

(including this presentation)

Page 188: ReST (Representational State Transfer) Explained

SOA is the evolution of RPC semantics

ReST / ROA is the evolution of www semantics

Page 189: ReST (Representational State Transfer) Explained

A look forward to increasing ReST popularity

Page 190: ReST (Representational State Transfer) Explained

ReST already is starting to dominate the internet space and there's a good likelihood it could dominate enterprise architectures as well.

Page 191: ReST (Representational State Transfer) Explained

References and Sources

● Roy Fielding's Dissertation on ReST● A little REST and Relaxation : presentation by Roy Fielding● Pragmatic Intro to REST and SOA, REST and the Web:

presentations by Stephan Tilkov● Pragmatic REST And RESTful Web Apps: presentations by

Subbu Allamaraju● Describing RESTful applications : Article by Subbu Allamaraju at

InfoQ.● RESTful Best Practices : presentation by calamitas● The REST architectural style : presentation by Robert Wilson

Page 192: ReST (Representational State Transfer) Explained

Thank You !