Author: Stefan Tilkov
from: InfoQ
---------------------------------------------
https://docs.google.com/fileview?id=0B9_1SZT2TitfYjY2OTNmZmQtYjYxYi00YThhLWEyZWQtNTNiOTUzYjE1NTIz&hl=en&authkey=CPvU4bwK
---------------------------------------------
Notes:
1). Give every "thing" a ID
Use URIs to identify everything that merits being identifiable, specifically, all of the “high-level” resources that your application provides, whether they represent individual items, collections of items, virtual and physical objects, or computation results.
2). Link things together
Hypermedia as the engine of application state "HATEOAS"
3). Use standard methods
For clients to be able to interact with your resources, they should implement the default application protocol (HTTP) correctly, i.e. make use of the standard methods GET, PUT, POST, DELETE.
4). Resources with multiple representations
Provide multiple representations of resources for different needs.
5). Communicate statelessly
REST mandates that state be either turned into resource state, or kept on the client. In other words, a server should not have to retain some sort of communication state for any of the clients it communicates with beyond a single request. The most obvious reason for this is scalability — the number of clients interacting would seriously impact the server’s footprint if it had to keep client state.