批量更新的宁静服务

时间:2012-12-20 12:30:46

标签: rest

我有一个我们打算用来批准交易的网络服务。

这是一个批处理过程,但我们认为PUT是最合适的方法,但相信它通常应该保留给单个事务。

我们应该坚持使用PUT进行此过程并传递类似于以下内容的有效负载:

{
    "Transactions": [
        {
            "TxId": "gtx-32",
            "VendorUserId" "76",
            "Status": "A"
        },
        {
            "TxId": "gtx-76",
            "VendorUserId" "76",
            "Status": "D"
        }
    ]
}

以上将TxId:gtx-32设置为状态A和TxId:gtx-76设置为状态D

然后我们将回复那些具有更新状态的事务的json对象。

如果任何一项交易要求更新无效状态,则响应只会让“旧”状态更新。针对交易的状态(我们应该在那里包含错误消息吗?)。

如果PUT不是采用此处的正确方法,我们欢迎提供替代方案的建议。

我们知道这只是对记录的部分更新,所以不是真正的PUT,但这绝对是更新......

1 个答案:

答案 0 :(得分:4)

PUT动词旨在表示“将此文档放在此处”。重要的是,PUT请求的URL应该是文档应该“存储”的位置,即URL上的GET将返回最后放在那里的文档。

在您的情况下,除非您将批量信息“上传”到特定位置,并且可以将您的批次视为自己的文档,PUT可能不是您的意思。

相反,您应该使用更通用的POST,旨在用于请求现有资源处理请求中包含的文档。然后,响应表示处理操作的结果。

POST可能是HTTP协议中最通用的动词。 “过程”可以是您需要的任何东西,因此当您没有发现任何其他动词反映您想要执行的活动时,通常最好选择。