Katana VentraIP

REST

REST (representational state transfer) is a software architectural style that was created to guide the design and development of the architecture for the World Wide Web. REST defines a set of constraints for how the architecture of a distributed, Internet-scale hypermedia system, such as the Web, should behave. The REST architectural style emphasises uniform interfaces, independent deployment of components, the scalability of interactions between them, and creating a layered architecture to promote caching to reduce user-perceived latency, enforce security, and encapsulate legacy systems.[1]

For other uses, see Rest (disambiguation).

REST has been employed throughout the software industry to create stateless, reliable web-based applications. An application that adheres to the REST architectural constraints may be informally described as RESTful, although this term is more commonly associated with the design of HTTP-based APIs and what are widely considered best practices regarding the "verbs" (HTTP methods) a resource responds to while having little to do with REST as originally formulated—and is often even at odds with the concept.[2]

Principle[edit]

The term representational state transfer was introduced and defined in 2000 by computer scientist Roy Fielding in his doctoral dissertation. It means that a server will respond with the representation of a resource (today, it will most often be an HTML, XML or JSON document) and that resource will contain hypermedia links that can be followed to make the state of the system change. Any such request will in turn receive the representation of a resource, and so on.


An important consequence is that the only identifier that needs to be known is the identifier of the first resource requested, and all other identifiers will be discovered. This means that those identifiers can change without the need to inform the client beforehand and that there can be only loose coupling between client and server.

Performance in component interactions, which can be the dominant factor in user-perceived performance and network efficiency;

[7]

allowing the support of large numbers of components and interactions among components;

Scalability

Simplicity of a uniform interface;

Modifiability of components to meet changing needs (even while the application is running);

Visibility of communication between components by service agents;

Portability of components by moving program code with the data;

Reliability in the resistance to failure at the system level in the presence of failures within components, connectors, or data.

[7]

The REST architectural style is designed for network-based applications, specifically client-server applications. But more than that, it is designed for Internet-scale usage, so the coupling between the user agent (client) and the origin server must be as loose as possible to facilitate large-scale adoption.


The strong decoupling of client and server together with the text-based transfer of information using a uniform addressing protocol provided the basis for meeting the requirements of the Web: extensibility, anarchic scalability and independent deployment of components, large-grain data transfer, and a low entry-barrier for content readers, content authors and developers alike.


The constraints of the REST architectural style affect the following architectural properties:[1][6]

Client/Server - Client are separated from servers by a well-defined interface

Stateless - A specific client does not consume server storage when it is "at rest"

Cache - Responses indicate their own cacheability

Uniform Interface

Layered System - A client cannot ordinarily tell whether it is connected directly to the end server, or to an intermediary along the way

Code on Demand (optional) - Servers are able to temporarily extend or customize the functionality of a client by transferring logic to the client that can be executed within a standard virtual machine

the

Richardson Maturity Model

the Classification of HTTP-based APIs

[11]

the W S3 maturity model

[12]

Several models have been developed to help classify REST APIs according to their adherence to various principles of REST design, such as

 – URL intended to improve the usability of a website

Clean URL

 – Layer in the internet ecosystem addressing bottlenecks

Content delivery network

(DAP)

Domain Application Protocol

 – Namespace identifier assigned by IANA

List of URI schemes

 – Collection of loosely coupled services used to build computer applications

Microservices

 – descriptions of computer network interfaces

Overview of RESTful API Description Languages

 – Architectural pattern in software design

Resource-oriented architecture

 – Architectural pattern in software design

Resource-oriented computing

 – Architectural pattern in software design

Service-oriented architecture

 – Architectural pattern in software design

Web-oriented architecture

 – Service offered between electronic devices via the internet

Web services

Pautasso, Cesare; Wilde, Erik; Alarcon, Rosa (2014), , Springer, ISBN 9781461492986

REST: Advanced Research Topics and Practical Applications

Pautasso, Cesare; Zimmermann, Olaf; Leymann, Frank (April 2008), "Restful web services vs. "big"' web services", , pp. 805–814, doi:10.1145/1367497.1367606, ISBN 9781605580852, S2CID 207167438

Proceedings of the 17th international conference on World Wide Web

Ferreira, Otavio (Nov 2009), , IADIS, ISBN 978-972-8924-93-5

Semantic Web Services: A RESTful Approach

Fowler, Martin (2010-03-18). . martinfowler.com. Retrieved 2017-06-26.

"Richardson Maturity Model: steps towards the glory of REST"