The uniform interface
that any REST interface must provide is considered fundamental to the design of
any REST service.
- Identification of resources
Individual resources are identified in requests, for
example using URIs in web-based REST systems. The resources themselves are
conceptually separate from the representations that are returned to the client.
For example, the server does not send its database, but rather, perhaps, some
HTML, XML or JSON that represents some database records expressed, for
instance, in Finnish and encoded in UTF-8, depending on the details of the
request and the server implementation.
- Manipulation of resources through these representations
When a client holds a
representation of a resource, including any metadata attached, it has enough
information to modify or delete the resource on the server, provided it has
permission to do so.
- Self-descriptive messages
Each message includes
enough information to describe how to process the message. For example, which
parser to invoke may be specified by an Internet media type (previously known
as a MIME type). Responses also explicitly indicate their cache ability.
- Hypermedia as the engine of application state
Clients make state
transitions only through actions that are dynamically identified within
hypermedia by the server (e.g. by hyperlinks within hypertext). Except for
simple fixed entry points to the application, a client does not assume that any
particular actions will be available for any particular resources beyond those
described in representations previously received from the server.