restful接口的原理

RESTful接口基于Representational State Transfer原理,强调资源的唯一标识URI。统一接口原则使用HTTP方法如GET、PUT、POST和DELETE,每个都有特定的语义和行为。资源的表述通过不同的格式提供,如HTML、XML、JSON等。客户端通过Accept头选择表述格式,服务器通过Content-Type响应。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

restful接口的原理

REST全称是Representational State Transfer, 中文意思是表述性状态转移。

下面我们结合REST原则,围绕资源展开讨论,从资源的定义、获取、表述、关联、状态变迁等角度,列举一些关键概念并加以解释。
•资源与URI
•统一资源接口
•资源的表述
•资源的链接
•状态的转移

1.资源与URI
REST全程是表述性状态转移,表述就是资源(指客户端请求一个资源,服务器拿到的这个资源,就是表述)。资源可以是实体,也可以是一个抽象概念。
要让一个资源被识别,需要有个唯一的标识,在Web中这个唯一标识就是URI(Uniform Resourse Identifier)。URI既可以堪称是资源的地址,也可以看成是资源的名称。如果某些信息没有使用URI来表示,那它就不能算是一个资源,只能算资源的一些信息而已。URI的设计应该遵循 可寻址性原则,具有自描述性,需要在形式上给人以直觉上的关联。

2.统一资源接口
RESTful架构应该遵循统一接口原则,统一接口包含了一组受限的预定义的操作,不论什么样的资源,都是通过使用相同的接口进行资源的访问。接口应该使用标准的HTTP方法如GET,PUT和POST,并遵循这些方法的语义。

如果按照HTTP方法的语义来暴露资源,那么接口将会拥有安全性和幂等性的特性,例如GET和HEAD请求都是安全的, 无论请求多少次,都不会改变服务器状态。而GET、HEAD、PUT和DELETE请求都是幂等的,无论对资源操作多少次, 结果总是一样的,后面的请求并不会产生比第一次更多的影响。

下面列出了GET,DELETE,PUT和POST的典型用法:

GET
•安全且幂等
•获取表示
•变更时获取表示(缓存)
•200(OK) - 表示已在响应中发出
•204(无内容) - 资源有空表示
•301(Moved Permanently) - 资源的URI已被更新
•303(See Other) - 其他(如,负载均衡)
•304(not modified)- 资源未更改(缓存)
•400 (bad request)- 指代坏请求(如,参数错误)
•404 (not found)- 资源不存在
•406 (not acceptable)- 服务端不支持所需表示
•500 (internal server error)- 通用错误响应
•503 (Service Unavailable)- 服务端当前无法处理请求

POST
•不安全且不幂等
•使用服务端管理的(自动产生)的实例号创建资源
•创建子资源
•部分更新资源
•如果没有被修改,则不过更新资源(乐观锁)
•200(OK)- 如果现有资源已被更改
•201(created)- 如果新资源被创建
•202(accepted)- 已接受处理请求但尚未完成(异步处理)
•301(Moved Permanently)- 资源的URI被更新
•303(See Other)- 其他(如,负载均衡)
•400(bad request)- 指代坏请求
•404 (not found)- 资源不存在
•406 (not acceptable)- 服务端不支持所需表示
•409 (conflict)- 通用冲突
•412 (Precondition Failed)- 前置条件失败(如执行条件更新时的冲突)
•415 (unsupported media type)- 接受到的表示不受支持
•500 (internal server error)- 通用错误响应
•503 (Service Unavailable)- 服务当前无法处理请求

PUT
•不安全但幂等
•用客户端管理的实例号创建一个资源
•通过替换的方式更新资源
•如果未被修改,则更新资源(乐观锁)
•200 (OK)- 如果已存在资源被更改
•201 (created)- 如果新资源被创建
•301(Moved Permanently)- 资源的URI已更改
•303 (See Other)- 其他(如,负载均衡)
•400 (bad request)- 指代坏请求
•404 (not found)- 资源不存在
•406 (not acceptable)- 服务端不支持所需表示
•409 (conflict)- 通用冲突
•412 (Precondition Failed)- 前置条件失败(如执行条件更新时的冲突)
•415 (unsupported media type)- 接受到的表示不受支持
•500 (internal server error)- 通用错误响应
•503 (Service Unavailable)- 服务当前无法处理请求

DELETE
•不安全但幂等
•删除资源
•200 (OK)- 资源已被删除
•301 (Moved Permanently)- 资源的URI已更改
•303 (See Other)- 其他,如负载均衡
•400 (bad request)- 指代坏请求
•404 (not found)- 资源不存在
•409 (conflict)- 通用冲突
•500 (internal server error)- 通用错误响应
•503 (Service Unavailable)- 服务端当前无法处理请求

3.资源的表述
客户端获取的是资源的表述,而不是资源本身。例如文本资源有html、xml、json等格式。

客户端可以通过Accept头请求一种特定格式的表述,服务端则通过Content-Type告诉客户端资源的表述形式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值