目前正在设计REST,并且不确定如何最好地处理退出操作,因此post忽略了安全性,因为这已经被处理了。
当前,用户资源具有balance连接,
GET https://api.example.com/user/1/balance
{"balance":10}将返回用户balance。
我可以考虑从这个余额中提取两个方法,要么是 balance 连接上的删除,要么是一个新的连接 DELETE ,然后将金额发到这个连接上。
删除执行-撤回5点
DELETE https://api.example.com/user/1/balance?amount=5
{"balance":5}实施后-撤回5分
POST https://api.example.com/user/1/withdraw
HTTP BODY: amount=5
{"balance":5}有什么建议吗?
就我个人而言,我会在撤回连接上发表文章,因为这样可以将操作从数据中分离出来,然后可以使用GET获取撤回事务,然后用DELETE取消事务。
更新
另一种方法可以是在balance对象上创建一个连接,然后发布到此对象。
POST https://api.example.com/user/1/balance/transactions
HTTP BODY: amount=-5
{"balance":5}这会是一个更好的方法吗?然后,这将在balance资源上创建事务资源。
发布于 2013-02-14 17:34:44
DELETE选项不是一个很好的选择,因为根据http语义,您并不期望资源的连续删除请求可以被接受,我的意思是您期望一个资源只能被删除一次。
考虑到提取操作是非幂等的,这意味着对同一资源的多个请求可以返回不同的响应,因为请求可以更改资源的状态(余额)。
对于这种非幂等运算,通常使用POST方法,如下所示:
Request:
POST https://api.example.com/user/1/balance/transactions
HTTP BODY: {type:withdraw, amount:5}
Response:
200 OK {"balance":"5"}
401 Unauthorized {"message":"insufficient funds"}看看这个资源,它可能会很有帮助。
http://www.restapitutorial.com/lessons/httpmethods.html
https://stackoverflow.com/questions/14874489
复制相似问题