REST核心概念(Representation/State/Transfer)定义及实例答疑
REST概念结合你的User表示例详解
先直接说结论:你的现有理解有一些偏差,咱们结合你的例子逐个理清楚~
我目前对REST的理解如下:
资源(Resource)- User表中的内容
表述(Representation)- 表格/JSON
状态转移(State transfer)- 数据从表格形式转为JSON形式
1. 我的示例中,什么是资源(Resource)?
REST里的资源是可以被唯一标识的具体实体或概念,在你的例子里,不是整个User表的内容,而是id为1的那个特定用户(也就是名为xxx的用户)。你的URL /test/1 就是这个资源的唯一标识符——它精准定位到了User表里id=1的那条记录,而不是整个表或者模糊的数据集。
2. 我的示例中,什么是表述(Representation)?
表述是资源的具体展现形式。你例子里有两种表述:
- 数据库里存储的表格行(
id:1, name:xxx)是这个用户资源的一种存储层面的表述; - 服务器返回的JSON
{ 1: "xxx" }是这个用户资源的另一种适合网络传输的表述。
简单说,资源是那个“用户本身”,表述是你把这个用户“怎么展示出来”——可以是JSON、XML,甚至如果有用户头像的话,图片也是一种表述。你请求后拿到的JSON,就是服务器提供的该资源的JSON格式表述。
3. 我的示例中,什么是状态转移(State transfer),或何时发生状态转移?
状态转移(全称是表述性状态转移,Representational State Transfer)核心是客户端和服务器通过传递资源的表述,来改变各自的状态。在你的场景里:
- 当你(客户端)发送请求
/test/1时,其实是在发起状态转移的请求; - 当服务器返回JSON表述后,你的客户端状态发生了转移:从“未持有该用户的信息”变成了“拥有该用户的JSON格式信息”。
这里要注意:不是数据格式的转换叫状态转移,而是客户端的状态因为获取到了资源的表述而更新。服务器端的资源状态(比如这个用户的名字)本身并没有改变,变化的是客户端的状态。
内容的提问来源于stack exchange,提问作者hmmm
相关产品推荐
相关产品推荐

