Representational State Transfer

From Wikipedia, the free encyclopedia From Wikipedia, the free encyclopedia

Jump to: navigation , search Jump to: navigation, search

Representational State Transfer ( REST ) is a style of software architecture for distributed hypermedia systems such as the World Wide Web . Representational State Transfer (REST) is a style of software architecture for distributed hypermedia systems such as the World Wide Web. The terms “Representational State Transfer” and “REST” were introduced in 2000 in the doctoral dissertation of Roy Fielding , [1] one of the principal authors of the Hypertext Transfer Protocol (HTTP) specification. The terms "Representational State Transfer" and "REST" were introduced in 2000 in the doctoral dissertation of Roy Fielding, [1] one of the principal authors of the Hypertext Transfer Protocol (HTTP) specification. The terms have since come into widespread use in the networking community. The terms have since come into widespread use in the networking community.

REST strictly refers to a collection of network architecture principles that outline how resources are defined and addressed. REST strictly refers to a collection of network architecture principles that outline how resources are defined and addressed. The term is often used in a looser sense to describe any simple interface that transmits domain‐specific data over HTTP without an additional messaging layer such as SOAP or session tracking via HTTP cookies . The term is often used in a looser sense to describe any simple interface that transmits data over HTTP domain without an additional layer such as SOAP messaging or via HTTP session tracking cookies. These two meanings can conflict as well as overlap. These two meanings can conflict as well as overlap. It is possible to design any large software system in accordance with Fielding’s REST architectural style without using HTTP and without interacting with the World Wide Web. It is possible to design any large software system in accordance with Fielding's REST architectural style without using HTTP and without interacting with the World Wide Web. It is also possible to design simple XML+HTTP interfaces that do not conform to REST principles, and instead follow a model of remote procedure call . It is also possible to design simple XML + HTTP interfaces that do not conform to REST principles, and instead follow a model of remote procedure call. The difference between the uses of the term “REST” causes some confusion in technical discussions. The difference between the use of the term "REST" causes some confusion in technical discussions.

Systems that follow Fielding’s REST principles are often referred to as “RESTful”; zealous REST advocates call themselves “RESTafarians”. Systems that follow Fielding's REST principles are often referred to as "RESTful" zealous REST advocates call themselves "RESTafarians.

Contents

<script type="text/javascript"> // </script>

 

[ edit ] Principles [Edit] Principles

REST’s proponents argue that the Web enjoyed the scalability and growth that it has had as a direct result of a few key design principles: REST's proponents argue that the Web enjoyed the scalability and growth that it has had as a direct result of a few key design principles:

  • Application state and functionality are divided into resources Application state and functionality are divided into resources
  • Every resource is uniquely addressable using a universal syntax for use in hypermedia links Every resource is uniquely addressable using a universal syntax for use in hypermedia links
  • All resources share a uniform interface for the transfer of state between client and resource, consisting of All resources share a uniform interface for the transfer of state between client and resource, consisting of
    • A constrained set of well‐defined operations A constrained set of well-defined operations
    • A constrained set of content types , optionally supporting code on demand A constrained set of content types, optionally supporting code on demand
  • A protocol that is: A protocol that is:
    • Client‐server Client-server
    • Stateless Stateless
    • Cacheable Cacheable
    • Layered Layered

REST’s client‐server separation of concerns simplifies component implementation, reduces the complexity of connector semantics, improves the effectiveness of performance tuning, and increases the scalability of pure server components. REST's client-server component separation of concerns simplifies implementation, reduces the complexity of semantics connector, improves the effectiveness of performance tuning, and increases the scalability of pure server components. Layered system constraints allow intermediaries—proxies, gateways, and firewalls—to be introduced at various points in the communication without changing the interfaces between components, thus allowing them to assist in communication translation or improve performance via large‐scale, shared caching. Layered system constraints allow intermediaries-proxies, gateways, and firewalls-to be introduced at various points in the communication without changing the interfaces between components, thus allowing them to assist in communication translation or improve performance via large-scale, shared caching. REST enables intermediate processing by constraining messages to be self‐descriptive: interaction is stateless between requests, standard methods and media types are used to indicate semantics and exchange information, and responses explicitly indicate cacheability. REST enables intermediate processing by constraining messages to be self-descriptive: stateless interaction is between requests, standard methods and media types are used to indicate semantics and exchange information, and responses explicitly indicate cacheability.

( Fielding 2000 , §5.3.1) (Fielding 2000, § 5.3.1)

[ edit ] REST's central principle: resources [Edit] REST's central principle: resources

An important concept in REST is the existence of resources (sources of specific information), each of which can be referred to using a global identifier (a URI ). An important concept in REST is the existence of resources (sources of specific information), each of which can be referred to using a global identifier (URI). In order to manipulate these resources, components of the network (clients and servers) communicate via a standardized interface (e.g. HTTP) and exchange representations of these resources (the actual documents conveying the information). In order to manipulate these resources, components of the network (clients and servers) communicate via a standardized interface (eg HTTP) and exchange representations of these resources (the actual documents conveying the information). For example, a resource that is a circle may accept and return a representation that specifies a center point and radius, formatted in SVG , but may also accept and return a representation that specifies any three distinct points along the curve as a comma‐separated list . For example, a resource that is a circle may accept and return a representation that specifies a center point and radius, formatted in SVG, but may also accept and return a representation that specifies any three distinct points along the curve as a comma-separated list .

Any number of connectors (e.g., clients , servers , caches , tunnels , etc.) can mediate the request, but each does so without “seeing past” its own request (referred to as “layering”, another constraint of REST and a common principle in many other parts of information and networking architecture). Any number of connectors (eg, clients, servers, caches, tunnels, etc..) Can mediate the request, but each does so without "seeing past" its own request (referred to as "layering", another constraint of REST and a common principle in many other parts of information and networking architecture). Thus an application can interact with a resource by knowing two things: the identifier of the resource, and the action required—it does not need to know whether there are caches, proxies, gateways, firewalls, tunnels, or anything else between it and the server actually holding the information. Thus an application can interact with a resource by knowing two things: the identifier of the resource, and the action required-it does not need to know whether there are caches, proxies, gateways, firewalls, tunnels, or anything else between it and the actually server holding the information. The application does, however, need to understand the format of the information ( representation ) returned, which is typically an HTML or XML document of some kind, although it may be an image or any other content. The application does, however, need to understand the format of the returned information (representation), which is typically an HTML or XML document of some kind, although it may be an image or any other content.

 

[ edit ] Claimed benefits [Edit] Claimed benefits

Many of the statements below refer to REST in the specific context of Web Services, as opposed to SOAP. Many of the statements below refer to REST in the specific context of Web Services, as opposed to SOAP. REST was originally defined in Fielding’s dissertation in the context of information and media access. REST was originally defined in Fielding's dissertation in the context of information and media access. Fielding did not originally contrast REST with RPC. Fielding did not originally REST contrast with PRC.

Advocates claim that REST: Advocates claim that REST:

  • Provides improved response times and server loading characteristics due to support for caching Provides improved response times and server loading characteristics due to support for caching
  • Improves server scalability by reducing the need to maintain communication state. Improves server scalability by reducing the need to maintain communication state. This means that different servers can be used to handle initial and subsequent requests This means that different servers can be used to handle initial and subsequent requests
  • Requires less client‐side software to be written than other approaches, because a single browser can access any application and any resource Requires less client-side software to be written than other approaches, because a single browser can access any application and any resource
  • Depends less on vendor software than mechanisms that layer additional messaging frameworks on top of HTTP Depends on less than software vendor mechanisms that additional layer messaging frameworks on top of HTTP
  • Provides equivalent functionality when compared to alternative approaches to communication Provides functionality equivalent when compared to alternative approaches to communication
  • Does not require a separate resource discovery mechanism, due to the use of hyperlinks in content Does not require a separate resource discovery mechanism, due to the use of hyperlinks in content
  • Provides better long‐term compatibility and evolvability characteristics than RPC. Provides better long-term compatibility and evolvability characteristics than RPC. This is due to: This is due to:
    • The capability of document types such as HTML to evolve without breaking backwards‐ or forwards‐ compatibility, and The capability of document types such as HTML to evolve without breaking backwards- or forwards- compatibility, and
    • The ability of resources to add support for new content types as they are defined without dropping or reducing support for older content types. The ability of resources to add support for new content types as they are defined without dropping or reducing support for older content types.

REST detractors note the lack of tool support and the scarcity of truly RESTful applications deployed on the web of today. REST detractors note the lack of tool support and the scarcity of truly RESTful applications deployed on the web of today. Some claim that REST is applicable to GET, but unproven for other state transfer operations such as PUT. Some claim that is applicable to GET REST, but unproven for other state transfer operations such as PUT. Fielding points out in his thesis that the REST architecture was designed specifically for massive scale hypermedia distribution, and not as a one size fits all architectural style. Fielding points out in his thesis that the REST architecture was designed specifically for hypermedia massive scale distribution, and not as a one size fits all architectural style. Indeed what characterizes REST is the constraints that it imposes on a REST based system. Indeed REST is what characterizes the constraints that it imposes on a REST based system. POST is often considered the only necessary client‐to‐server state transfer operation, and is treated as a mechanism to tunnel arbitrary method invocations across HTTP. POST is often considered the only necessary client-to-server state transfer operation, and is treated as a mechanism to tunnel arbitrary method invocations across HTTP.

Some REST systems have been deployed and gained tools support such as WebDAV which uses not only GET and POST, but also established HTTP methods like HEAD, DELETE, PUT as well as WebDAV‐specific HTTP methods: PROPFIND, PROPPATCH, MKCOL, COPY, MOVE, LOCK, and UNLOCK. Some REST systems have been deployed and gained support tools such as WebDAV which uses not only GET and POST, but also established methods like HTTP HEAD, DELETE, PUT as well as WebDAV-specific HTTP methods: PROPFIND, PROPPATCH, MKCOL, COPY, MOVE , LOCK, and UNLOCK.

One common stumbling block in the dialog on Claimed Benefits is focusing too much on web browser support for REST. One common stumbling block in the dialog on Claimed Benefits is focusing too much on support for REST Web browser. Gateways, caching servers, proxies, and other REST connectors are the critical components for system design and REST. Gateways, caching servers, proxies, and other REST connectors are the critical components for system design and REST.

 

[ edit ] RESTful example: the World Wide Web [Edit] RESTful example: the World Wide Web

The World Wide Web is the key example of a RESTful design. The World Wide Web is the key example of a RESTful design. Much of it conforms to the REST principles. Much of it conforms to the principles REST. The Web consists of the Hypertext Transfer Protocol (HTTP), content types including the Hypertext Markup Language (HTML), and other Internet technologies such as the Domain Name System (DNS). The Web consists of the Hypertext Transfer Protocol (HTTP), content types including the Hypertext Markup Language (HTML), and other technologies such as the Internet Domain Name System (DNS).

HTML can include JavaScript and applets to support code on demand , and has implicit support for hyperlinks. HTML can include applets and JavaScript code to support on demand, and has implicit support for hyperlinks.

HTTP has a uniform interface for accessing resources, which consists of URIs , methods , status codes, headers, and content distinguished by MIME type . HTTP has a uniform interface for accessing resources, which consists of methods, status codes, headers, and content distinguished by MIME type.URIs,

The most important HTTP methods are POST , GET , PUT and DELETE . The most important methods are HTTP POST, GET, PUT and DELETE. These are often compared with the CREATE, READ, UPDATE, DELETE (CRUD) operations associated with database technologies: [2] These are often compared with the CREATE, READ, UPDATE, DELETE (CRUD) operations associated with database technologies: [2]

The following table associates several common HTTP verbs with similar database operations, however the meaning of the HTTP verbs do not correspond directly with a single database operation. The following table associates several common HTTP verbs with similar database operations, however the meaning of the HTTP verbs do not correspond directly with a single database operation. For example, an HTTP PUT is used to set the value of a resource and may result in either a creation or update as needed. For example, an HTTP PUT is used to set the value of a resource and may result in either a creation or update as needed.

HTTP CRUD
POST Create, Update, Delete Create, Update, Delete
GET Read
PUT Create, Update Create, Update
DELETE Delete

HTTP separates the notions of a web server and a web browser. HTTP separates the notions of a Web server and a Web browser. This allows the implementation of each to vary from the other based on the client‐server principle . This allows the implementation of each to vary from the other based on the client-server principle. When used RESTfully, HTTP is stateless . When used RESTfully, HTTP is stateless. Each message contains all the information necessary to understand the request when combined with state at the resource. Each message contains all the information necessary to understand the request when combined with state at the resource. As a result, neither the client nor the server needs to remember any communication state between messages. As a result, neither the client nor the server needs to remember any communication between state messages. Any state retained by the server must be modeled as a resource. Any state retained by the server must be modeled as a resource.

The statelessness constraint can be violated in HTTP using cookies to maintain sessions. The statelessness constraint can be violated in HTTP using cookies to maintain sessions. Fielding notes the risks of privacy leaks and security complications that often arise through the use of cookies, and the confusions and bugs that can result from interactions between cookies and the “back” button in a browser. Fielding notes the risks of leaks privacy and security complications that often arise through the use of cookies, and the confusions and bugs that can result from interactions between cookies and the "back" button in a browser.

HTTP provides mechanisms to control caching, and permits a conversation between web browser and web cache to occur using the same mechanisms as between web browser and web server. HTTP provides mechanisms to control caching, and permits a conversation between web browser and web cache to occur using the same mechanisms as between Web browser and Web server. No layer can access any conversation other than the one it is immediately involved with. Not layer can access any conversation other than the one it is immediately involved with.

 

[ edit ] REST versus RPC [Edit] REST vs. PRC

The statements below refer to REST in the context of Web Services, specifically as opposed to SOAP. The statements below refer to REST in the context of Web Services, specifically as opposed to SOAP. Note that Fielding’s dissertation presents REST in the context of information and media access, not web services. Note that Fielding's dissertation presents REST in the context of information and media access, not web services. It does not contrast REST to RPC. It does not contrast to REST PRC.

REST
Resources—Commands are defined in simple terms: resources to be retrieved, stored / get, set—difficult to do many joins Resources-Commands are defined in simple terms: resources to be retrieved, stored / get, set-difficult to do many joins
RPC
Commands—Commands are defined in methods with varying complexity: depending on “standard”—easier (?) to hide complex things behind a method Commands-Commands are defined in methods with varying complexity: depending on "standard" -easier (?) Things to hide behind a complex method
REST
Nouns—Exchanging resources and concepts Nouns-Exchanging resources and concepts
RPC
Verbs—Exchanging methods Verbs-Exchanging methods
REST Triangle of nouns, verbs, and content types.
REST Triangle of nouns, verbs, and content types. REST Triangle of nouns, verbs, and content types.

A RESTful web application requires a different design approach from an RPC ( remote procedure call ) application. A RESTful web application requires a different design approach from an RPC (remote procedure call) application. An RPC application is exposed as one or more network objects, each with an often unique set of functions that can be invoked. An RPC application is exposed as one or more network objects, each with an often unique set of functions that can be invoked. Before a client communicates with the application it must have knowledge of the object identity in order to locate it and must also have knowledge of the object type in order to communicate with it. Before a client communicates with the application it must have knowledge of the object identity in order to locate it and must also have knowledge of the object type in order to communicate with it.

RESTful design constrains the aspects of a resource that define its interface (the verbs and content types). RESTful design constrains the aspects of a resource that defines its interface (the verbs and content types). This leads to the definition of fewer types on the network than an RPC‐based application but more resource identifiers (nouns). This leads to the definition of fewer types on the network than an RPC-based application but more resource identifiers (nouns). REST design seeks to define a set of resources that clients can interact with uniformly, and to provide hyperlinks between resources that clients can navigate without requiring knowledge of the whole resource set. REST design seeks to define a set of resources that clients can interact with uniformly, and to provide hyperlinks between resources that clients can navigate without requiring knowledge of the whole resource September. Server‐provided forms can also be used in a RESTful environment to describe how clients should construct a URL in order to navigate to a particular resource. Server-provided forms can also be used in a RESTful environment to describe how clients should construct a URL in order to navigate to a particular resource.

 

[ edit ] Example [Edit] Example

An RPC application might define operations such as the following: An RPC application might define operations such as the following:

 getUser() addUser() removeUser() updateUser() getLocation() addLocation() removeLocation() updateLocation() listUsers() listLocations() findLocation() findUser() GetUser () addUser () removeUser () updateUser () getLocation () addLocation () removeLocation () updateLocation () listUsers () listLocations () findLocation () findUser () 

Client code to access this application may look something like this: Client code to access this application may look something like this:

 exampleAppObject = new ExampleApp('example.com:1234') exampleAppObject.removeUser('001') ExampleAppObject = new ExampleApp ( 'example.com: 1234') exampleAppObject.removeUser ('001 ') 

With REST, on the other hand, the emphasis is on the diversity of resources, or nouns ; for example, a REST application might define the following resources With REST, on the other hand, the emphasis is on the diversity of resources, or nouns, for example, might REST application defines the following resources

 http://example.com/users/ http://example.com/users/{user} (one for each user) http://example.com/findUserForm http://example.com/locations/ http://example.com/locations/{location} (one for each location) http://example.com/findLocationForm Http://example.com/users/ http://example.com/users/ (user) (one for each user) http://example.com/findUserForm http://example.com/locations/ http: / / example.com / locations /) (location (one for each location) http://example.com/findLocationForm 

Client code to access this application may look something like this: Client code to access this application may look something like this:

 userResource = new Resource('http://example.com/users/001') userResource.delete() UserResource = new Resource ( 'http://example.com/users/001') userResource.delete () 

Each resource has its own identifier noun. Each resource has its own identifier noun. Clients start at a single resource such as the user resource that represents themselves, and navigate to location resources and other user resources. Clients start at a single resource such as the user resource that represents themselves, and navigate to user location resources and other resources. Clients work with each resource through standard operations, such as GET to download a copy of the resource’s representation, PUT to paste a changed copy over the top of the original, or DELETE to remove the data or state associated with the resource. Clients work with each resource through standard operations, such as Get to download a copy of the resource's representation, PUT to paste a copy changed over the top of the original, or DELETE to remove the data or state associated with the resource. POST is sometimes used interchangeably with PUT, but can also be seen as a “paste after” rather than a “paste over” request. POST is sometimes used interchangeably with PUT, but can also be seen as a "paste after" rather than a "paste over 'request. POST is generally used for actions with side‐effects, such as requesting the creation of a purchase order, or adding some data to a collection. POST is generally used for actions with side-effects, such as requesting the creation of a purchase order, or adding some data to a collection. Note how each object has its own URL and can easily be cached, copied, and bookmarked. Note how each object has its own URL and can easily be cached, copied, and bookmarked.

 

[ edit ] Uniform interfaces in REST and RPC [Edit] Uniform interfaces in RPC and REST

The uniform interface allows clients to access data from a range of resources without special code to deal with each one, so long as it is actually uniform. The uniform interface allows clients to access data from a range of resources without special code to deal with each one, so long as it is actually uniform. The content returned from a user resource could be the globally standard and RESTful HTML, a less RESTful industry standard representation such as UserML, or an unRESTful application‐specific data format. The content returned from a user resource could be the globally standard and RESTful HTML, less RESTful industry standard representation such as UserML, or an unRESTful application data format. Which content is returned can be negotiated at request time. Which is returned content can be negotiated at request time. The content could even be a combination of these representations: HTML can be marked up with Microformats that have general or industry‐specific appeal, and these microformats can be extended with application‐specific information. The content could even be a combination of these representations: HTML can be marked up with Microformats that have general or industry-specific appeal, and these microformats can be extended with application information.

Uniform interfaces reduce the cost of client software by ensuring it is only written once, rather than once per application it has to deal with. Uniform interface reduces the cost of client software by ensuring it is only written once, rather than once per application it has to deal with. Both REST and RPC designs may try to maximise the uniformity of the interface they expose by conforming to industry or global standards. Both RPC and REST designs may try to maximize the uniformity of the interface they expose by industry or conforming to global standards. In the RPC model these standards are primarily in the form of standard type definitions and standard choreography. In the RPC model these standards are primarily in the form of standard type definitions and standard choreography. In REST it is primarily the choice of standard content types and verbs that controls uniformity. In REST it is primarily the choice of standard content types and verbs that controls uniformity.

 

[ edit ] Public implementations [Edit] Public implementations

It is possible to claim an enormous number of RESTful applications on the Web (just about everything accessible through an HTTP GET request or updateable through HTTP POST). It is possible to claim an enormous number of RESTful applications on the Web (just about everything accessible through an HTTP GET request or updateable through HTTP POST). Taken more narrowly, in its sense as an alternative to both Web Services generally and the RPC style specifically, REST can be found in a number of places on the public Web: Taken more narrowly, in its sense as an alternative to Web Services both generally and specifically the RPC style, REST can be found in a number of places on the public Web:

  • The “ blogosphere ” — the universe of weblogs — is mostly REST‐based, since it involves downloading XML files (in RSS or Atom format) that contain lists of links to other resources; The "blogosphere" - the universe of weblogs - is mostly REST-based, since it involves downloading XML files (in RSS or Atom format) that contain lists of links to other resources;
  • The Atom Publishing Protocol for publishing to blogs is considered the canonical RESTful protocol ; The Atom Publishing Protocol for publishing to blogs is considered the canonical RESTful protocol;
  • Ruby on Rails 1.2 and later offers a REST model . Ruby on Rails 1.2 and later offers a REST model.
  • JAX‐RS, a Java API for RESTful services, is under development [3] JAX-RS, Java API for RESTful services, is under development [3]
  • Various websites and web applications offer REST developer interfaces to data. Various websites and web applications offer REST developer interfaces to data.

The size of the last category is very small (i.e., those that offer the Atom Publishing Protocol plus a handful of others). The size of the last category is very small (ie, those that offer the Atom Publishing Protocol plus a handful of others).

Note that WSDL version 2.0 now offers support for binding to all the HTTP request methods (not only GET and POST as in version 1.1). [4] Note that WSDL version 2.0 now offers support for binding to all the HTTP request methods (GET and POST not only as in version 1.1). [4]

 

[ edit ] Implementation challenges [Edit] Implementation challenges

There are examples of website interfaces that label themselves “REST”, but are, in fact, using HTTP to tunnel function calls or which offer a “POX/HTTP”, ( Plain Old XML over HTTP) endpoint. There are examples of website interfaces that label themselves "REST", but are, in fact, using HTTP tunnel to function calls or which offer a "POX / HTTP" (Plain Old XML over HTTP) endpoint. These interfaces do not intentionally respect REST’s architectural constraints. These interfaces do not intentionally respect REST's architectural constraints. Some have been called “ accidentally RESTful ” by a REST expert. Some have been called "accidentally RESTful" by a REST expert. The “accident” of RESTfulness occurs primarily when standalone GETs are used, i.e., when navigating through many GETs in hypermedia style is not supported, and when those GETs simply retrieve data and do not change it. The "accident" of RESTfulness occurs primarily when standalone GETs are used, ie, when navigating through many GETs in hypermedia style is not supported, and when those GETs simply retrieve data and do not change it.

Implementation is hampered by limited support for HTTP PUT and DELETE in popular development platforms. Implementation is hampered by limited support for HTTP PUT and DELETE in popular development platforms. For example, in the LAMP platform, support for PUT must be added as a module. For example, in the LAMP platform, support for PUT must be added as a module. Web searches offer few examples of how to implement updating database‐driven content using PUT. Web searches offer few examples of how to implement updating database-driven content using PUT. For example, it is nontrivial to create a PHP script to update http://example.com/thing/1 with a PUT message when /thing.php will serve a GET request with XML generated from a database. For example, it is nontrivial to create a PHP script to update http://example.com/thing/1 with a message when PUT / thing.php will serve a GET request with XML generated from a database. Most published patterns for updating entities utilize the POST method. Most published patterns for updating entities using the POST method.

 

[ edit ] Outside of the Web [Edit] Outside of the Web

Just as much of the web can be seen as RESTful or nearly RESTful, a number of existing protocols and architectures have RESTful characteristics. Just as much of the Web can be seen as RESTful or nearly RESTful, a number of existing protocols and architectures have RESTful characteristics. Software that may interact with a number of different kinds of objects or devices can do so by virtue of a uniform, agreed interface. Software that may interact with a number of different kinds of objects or devices can do so by virtue of a uniform, agreed interface. Many of these uniform interfaces follow document‐oriented REST patterns rather than object‐oriented patterns [should expand on and thus clarify this distinction]: Many of these interfaces uniform follow document-oriented REST patterns rather than object-oriented patterns [should expand on this distinction and thus clarify]:

  • Modbus is a protocol that allows memory ranges within PLCs to be addressed. Modbus is a protocol that allows memory ranges within PLC to be addressed. Ranges can be written and read effectively as PUT and GET operations. Ranges can be written and read effectively as PUT and GET operations.
  • JavaBeans and other systems that perform property‐based editing follow the PUT and GET model of the REST architectural style. JavaBeans and other systems that perform property-based editing follow the PUT and GET REST model of the architectural style. Rather than write object‐specific editor code, the code is written once and can interact with various object types. Rather than write object-specific publisher code, the code is written once and can interact with various object types. Resources in this model are defined by the combination of an object identifier and a property name. Resources in this model are defined by the combination of an object identifier and a property name.
  • Document‐oriented SOA has several RESTful characteristics. Document-oriented SOA has several RESTful characteristics.

 

[ edit ] References References [edit]

Fielding, Roy T. Fielding, Roy T. & Taylor, Richard N. & Taylor, Richard N. (2002-05), " Principled Design of the Modern Web Architecture ", ACM Transactions on Internet Technology (TOIT) (New York: Association for Computing Machinery) 2  (2): 115–150, ISSN 1533-5399 , DOI : 10.1145/514183.514185 , < http://www.ics.uci.edu/~taylor/documents/2002-REST-TOIT.pdf > (2002-05), "Principled Design of the Modern Web Architecture", ACM Transactions on Internet Technology (TOIT) (New York: Association for Computing Machinery) 2 (2): 115-150, ISSN 1533-5399, DOI: 10.1145 / 514183.514185 <http://www.ics.uci.edu/ ~ taylor/documents/2002-REST-TOIT.pdf>

Fielding, Roy Thomas (2000), Architectural Styles and the Design of Network-based Software Architectures , University of California, Irvine , < http://www.ics.uci.edu/~fielding/pubs/dissertation/top.htm > Fielding, Roy Thomas (2000), Architectural Styles and the Design of Network Software Architectures, University of California, Irvine, <http://www.ics.uci.edu/ ~ fielding / pubs / dissertation / top.htm>

zur Muehlen, Michael; Nickerson, Jeffrey V. Zur Muehlen, Michael; Nickerson, Jeffrey V. & Swenson, Keith D. & Swenson, Keith D. (2005-07), " Developing Web Services Choreography Standards—The Case of REST vs. SOAP ", Decision Support Systems 40  (1): 9–29, ISSN 0167-9236 , < http://www.workflowresearch.com/Publications/PDF/MIZU.JENI.KESW-DSS(2004).pdf > . (2005-07), "Developing Web Services Choreography Standards-The Case of REST vs.. SOAP", Decision Support Systems 40 (1): 9-29, ISSN 0167-9236, <http://www.workflowresearch.com/ Publications / PDF / MIZU.JENI.KESW-DSS (2004). pdf>. Retrieved on 2007-09-18 Retrieved on 2007-09-18

Khare, Rohit (2004-05-27), Extending the Representational State Transfer (REST) architectural style for decentralized systems , Edinburgh, Scotland, ISSN 0270-5257 ISBN 0-7695-2163-0 , < http://www.isr.uci.edu/tech_reports/UCI-ISR-03-8.pdf > Khare, Rohit (2004-05-27), Extending the Representational State Transfer (REST) architectural style for decentralized systems, Edinburgh, Scotland, ISSN 0270-5257 ISBN 0-7695-2163-0, <http://www.isr . uci.edu/tech_reports/UCI-ISR-03-8.pdf>

Tenenbaum, Jay M. Tenenbaum, Jay M. & Khare, Rohit (2005), Business Services Networks: delivering the promises of B2B , Hong Kong: IEEE Press, pp. & Khare, Rohit (2005), Business Services Networks: delivering the promises of B2B, Hong Kong: IEEE Press, pp. 8-8 8-8

Robie, Jonathan (2006-12), An XQuery Servlet for RESTful Data Services , Boston, Massachusetts , < http://2006.xmlconference.org/proceedings/87/presentation.html > Robie, Jonathan (2006-12), An XQuery Servlet for RESTful Data Services, Boston, Massachusetts, <http://2006.xmlconference.org/proceedings/87/presentation.html>

Prescod, Paul (2002-02-06), Second Generation Web Services , O’Reilly’s XML.com , < http://webservices.xml.com/pub/a/ws/2002/02/06/rest.html > . Prescod, Paul (2002-02-06), Second Generation Web Services, O'Reilly's XML.com, <http://webservices.xml.com/pub/a/ws/2002/02/06/rest. html>. Retrieved on 2007-09-18 Retrieved on 2007-09-18

Jacobs, Ian & Walsh, Norman, eds. Jacobs, Ian & Walsh, Norman, eds. (2004-12-14), Architecture of the World Wide Web , vol. (2004-12-14), Architecture of the World Wide Web, Vol. 1, W3C , < http://www.w3.org/2001/tag/webarch/ > . 1, W3C, <http://www.w3.org/2001/tag/webarch/>. Retrieved on 2007-09-18 Retrieved on 2007-09-18

Richardson, Leonard & Ruby, Sam (2007), RESTful Web Services , O’Reilly Publishers, ISBN 0-596-52926-0 Richardson, Leonard & Ruby, Sam (2007), RESTful Web Services, O'Reilly Publishers, ISBN 0-596-52926-0

 

[ edit ] Notes [Edit] Notes

  1. ^ Chapter 5 of Fielding’s dissertation is “Representational State Transfer (REST)” . ^ Chapter 5 of Fielding's dissertation is "Representational State Transfer (REST)."
  2. ^ IETF RFC 2616 “Hypertext Transfer Protocol -- HTTP/1.1”, R. ^ IETF RFC 2616 "Hypertext Transfer Protocol -- HTTP/1.1," R. Fielding et al., June 1999 Fielding et al., June 1999
  3. ^ JSR 311: JAX-RS: The Java™ API for RESTful Web Services . ^ JSR 311: JAX-RS: The Java ™ API for RESTful Web Services.
  4. ^ Web Services Description Language (WSDL) Version 2.0 Part 2: Adjuncts . ^ Web Services Description Language (WSDL) Version 2.0 Part 2: Adjuncts.

 

[ edit ] See also [Edit] See also

 

[ edit ] External links [Edit] External links

 

[ edit ] Products [Edit] Products

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值