让我们考虑一下我需要开发一个REST银行应用程序 允许创建/销毁银行账户以及银行账户 对帐户进行以下操作:撤销/信用/获取平衡。
PUT / Bank / john
这里我使用PUT而不是POST,因为这个操作是 幂等因为客户端正在提供URL
DELETE / Bank / john
GET / Bank / john
POST / Bank / john
行动=撤回&安培;值= 10
POST / Bank / john
行动=信用&安培;值= 10
在这里,我使用了POST,因为提款/信用显然不是幂等的
它是一种RESTful兼容的设计这些操作的方式吗?
我觉得我通过把动词(撤回|信用)放在里面来写一些类似RPC的东西 动作参数..我经常读到REST不应该模仿类似RPC的样式......
答案 0 :(得分:2)
在处理REST时,通常从资源方面考虑是有帮助的。在这种情况下,您的资源不仅仅是您的“银行帐户”,而且还是该银行帐户的交易。
存款
POST /Bank/Account/John/Transaction
currency=USD&amount=10
退出
POST /Bank/Account/John/Transaction
currency=USD&amount=-10
您的回复应包含此新创建的交易的Location
标头。
您正在创建一个交易。这样做的好处是您可以将该事务作为资源引用。
GET /Bank/Account/John/Transaction/12345
这可能会返回该确切交易的记录(例如,您的用户通常需要记录其帐户中的借记和贷记)。
答案 1 :(得分:1)
我认为你不应该添加“action = credit& value = 10”的东西。您可以创建更多/更长的URI。 例如:
create an account: POST /Bank/Accounts/John
credit money to an account: POST /Bank/John/Money/10