1. 资源
需要一个自解释的名字。名字通过URL给出。如2005年按月报表:
http://example.org/reports/2005/monthly
2. 资源上面可以执行多个动词
GET/PUT/POST/DELETE
遵循幂等原则,不是简单的CRUD。如PUT成功后可以在返回资源内容的时候, Location到替换的资源的URL。
3. 资源可以索引到更多的资源
如http://example.org/reports/2005/monthly可以索引:
http://example.org/reports/2005/month/1
http://example.org/reports/2005/month/2
...
http://example.org/reports/2005/month/12
4. 资源的格式是客户端提出的。客户端发出Accept头
Accept: text/xml
得到:
<reports>
<report>http://examples.org/reports/2005/month/1</report>
<report>http://examples.org/reports/2005/month/2</report>
...
<report>http://examples.org/reports/2005/month/12</report>
</reports>
Accept: application/json
得到:
{"reports":[{"report": "http://examples.org/reports/2005/month/1"},
{"report": "http://examples.org/reports/2005/month/2"},
...
{"report": "http://examples.org/reports/2005/month/12"},
]}