Representational State Transfer (REST) is an architectural style for building distributed systems. The WWW is an example for such a system. REST-style applications can be built using a wide variety of technologies. REST's main principles are that of resource-oriented states and functionalities, the idea of a unique way of identifying resources, and the idea of how operations on these resources are defined in terms of a single protocol for interacting with resources. REST-oriented system design leads to systems which are open, scalable, extensible, and easy to understand.
There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.
C. A. R. Hoare, The Emperor's Old Clothes
, 1980 Turing Award Lecture
againstthe tool is possible, but hard and rarely done
POST
) data to a resourceLOCK
and UNLOCK
for remote editingMKCOL
for creating new collectionsPROPFIND
and PROPPATCH
for metadata manipulationLOCK
and UNLOCK
could be regarded as fundamentalGET
: Fetching a resource (there must be no side-effects)PUT
: Transfers a resource to a server (overwriting if there already is one)POST
: Adds to an existing resource on the serverDELETE
: Discards a resource (its name cannot be used anymore)POST
ingPOST
adds instead of an overwriting updatePOST
can have different effectsPOST
ing, state is changed and a new resource is createdPOST
ing, only the existing resource is changedPOST
able resources should be GET
able as wellPOST
sRESTin his Ph.D. thesis
application-level protocol