举个具体API的例子: This is the post content.
请求:
GET /posts HTTP/1.1
Accept: application/atom+xml
响应:
HTTP/1.1 200 OK
Content-Type: application/atom+xml
注意上面atom格式中的多个元素,它们分别定义了当前状态下合法的状态转移。
例如,这是一个指向自己的链接,其中rel属性指定了状态转移的关系为自身。
这是下一页的链接,
如果当前不是第一页的话,就会有类似如下的链接来表示上一页,
而这个是某一篇文章的链接,
总结一下,就是:
服务器生成包含状态转移的表征数据,用来响应客户端对于一个资源的请求;
客户端借助这份表征数据,记录了当前的应用状态以及对应可转移状态的方式。
当然,为了要实现这一系列的功能,一个不可或缺的东西就是超文本(hypertext)或者说超媒体类型(hypermedia type)。这绝对不是一个简简单单的媒体类型(例如,JSON属性列表)可以做到的。(参考:REST APIs must be hypertext-driven)
因此,像下面这种API,
1、获取文章
请求:
GET /blog/post/{postId} HTTP/1.1
响应:
HTTP/1.1 200 OK
{
"title": "foobar",
"content": "foobar",
"comments": ["", "", ""]
}
2、发布文章
请求:
POST /blog/post HTTP/1.1
{
"title": "foobar",
"content": "foobar",
"comments": ["", "", ""]
}
响应:
HTTP/1.1 201 CREATED