Representational state transfer

programming paradigm

Representational state transfer (REST) is a programming architectural implementation intended to increase the efficiency of communication in computing systems. It embodies the idea that the best way to share large amounts of data between multiple parties is to make that data available on-demand by sharing references to that data rather than a complete copy of the data itself. Systems which implement REST are called 'RESTful' systems.

An example of a non-RESTful real-world system would be the traditional home movie collection. In order to have access to any given movie, the library owner must obtain a physical copy of it. This results in substantial waste as more copies are in existence than are in use at any given moment. Also, the time required to add new titles to the library is generally non-trivial. Streaming video is the RESTful counterpart to the home library. Instead of having a complete copy of every movie stored in the home, the movie is referred to by its title only and the content of the movie is streamed on demand.

The World Wide Web is the largest example of a RESTful system today. Physical libraries are its non-RESTful equivalent. Instead of sending a physical electronic copy of every digital resource to each person or library, we assign each resource a URL identifier "", then access the actual content via the Internet rather than retrieving a local copy from an optical disk or a hard drive.

REST architecture can be applied in other contexts. For example, consider two companies which want to share multiple gigabytes of information that constantly changes. Sending a complete copy of their databases to each other (even via the internet) on a regular basis is a wasteful and time-consuming process. This method of sharing information is similar to the library example previously given. Instead, the companies can share database IDs with each other, perhaps even assigning each item in the database its own URL. When one company wants to query the database for price of a particular item belonging to the other company, it can then retrieve the data for that specific inventory item.