RESTful兼容设计

时间:2012-03-02 21:31:38

标签: http rest post soa

让我们考虑一下我需要开发一个REST银行应用程序 允许创建/销毁银行账户以及银行账户 对帐户进行以下操作:撤销/信用/获取平衡。

  • 创建帐户

PUT / Bank / john

这里我使用PUT而不是POST,因为这个操作是 幂等因为客户端正在提供URL

  • 销毁帐户

DELETE / Bank / john

  • 为getBalance

GET / Bank / john

  • 从帐户中提取资金

POST / Bank / john

行动=撤回&安培;值= 10

  • 向帐户存入资金

POST / Bank / john

行动=信用&安培;值= 10

在这里,我使用了POST,因为提款/信用显然不是幂等的

它是一种RESTful兼容的设计这些操作的方式吗?

我觉得我通过把动词(撤回|信用)放在里面来写一些类似RPC的东西 动作参数..我经常读到REST不应该模仿类似RPC的样式......

2 个答案:

答案 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