在restful API中添加属性

时间:2013-01-21 12:02:19

标签: api http rest

我正在设计HTTP API。

我有一个具有Balance属性的Card资源,客户端可以添加/减去。

起初我认为这应该被实现为PUT,因为它是资源更新的一种形式,但后来我读到PUT是幂等的,但添加到数量并不是幂等的。

由于它不是对象的创建,我认为我将其称为控制器,如:

POST example.org/card/{card-Id}/AddToBalance

data: value=10

将余额加10。

有更好的方法吗?

2 个答案:

答案 0 :(得分:1)

是的,像这样的用例不是REST擅长的地方(表达操作,特别是当它们只影响实体数据的一小部分时)。你的特殊情况非常简单,你可以通过对动词和端点稍作修改来处理它:

PUT example.org/card/{card-Id}/balance

{"value" : 100}

基本上读为"Update the balance of card {id} to 100"。在服务器端,您仍然需要验证交易,并根据余额的现有价值确定其有效的添加。

答案 1 :(得分:0)

设计看起来和REST主体一样好。

PUT动作应该是幂等的。但这取决于你的要求

您可以使用 PATCH 的其他内容,因为您只是在进行部分更新,而不是完全替换资源。