资源导向架构与只读服务设计
1. 重载 POST 与统一接口
在使用 HTTP 协议时,即使仅用 POST 方法来创建子资源或追加到资源表示中,也可能需要暴露重载的 POST。若单个资源同时支持这两种 POST 操作,服务器如何判断客户端是要创建子资源还是追加到现有资源表示呢?这可能需要在 HTTP 请求的其他位置添加额外的方法信息。
不过,重载 POST 不应被用于掩盖糟糕的资源设计。资源可以是任何事物,通常可以调整资源设计以应用统一接口,而非将 RPC 风格引入服务。
2. 安全性和幂等性
2.1 安全性
GET 或 HEAD 请求是用于读取数据,而非改变服务器状态。客户端多次发送 GET 或 HEAD 请求与发送一次或不发送的效果相同。例如,当你访问 http://www.google.com/search?q=jellyfish 时,只是在检索水母资源目录的表示,并未改变任何内容。
但这并不意味着 GET 和 HEAD 请求没有副作用。有些资源是点击计数器,每次客户端进行 GET 请求时会递增;大多数 Web 服务器会将每个传入请求记录到日志文件中。不过,这些副作用并非客户端所请求的,客户端也无需对此负责。客户端不应仅为了副作用而发送 GET 或 HEAD 请求,且副作用不应大到让客户端后悔发送请求。
2.2 幂等性
幂等性的概念源于数学,指的是一个操作无论执行一次还是多次,效果都相同。例如,一个数乘以零是幂等操作, 4 × 0 × 0 × 0 与 4 × 0 结果相同。
资源导向架构与只读服务设计
超级会员免费看
订阅专栏 解锁全文
284

被折叠的 条评论
为什么被折叠?



