怎样用通俗的语言解释什么叫 REST,以及什么是 RESTful

2025-04-02 12:10:28
推荐回答(1个)
回答1:

举个具体API的例子:
请求:
GET /posts HTTP/1.1
Accept: application/atom+xml

响应:
HTTP/1.1 200 OK
Content-Type: application/atom+xml



Posts



urn:uuid:60a76c80-d399-11d9-b91C-0003939e0af6
2003-12-13T18:30:02Z

Post XXX

urn:uuid:1225c695-cfb8-4ebb-aaaa-80da344efa6a
2003-12-13T18:30:02Z


This is the post content.





...


注意上面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