让我们考虑一下,我需要开发一个REST银行应用程序,它允许创建/销毁银行帐户以及帐户上的以下操作:取款/信贷/getBalance。
PUT /Bank/john
在这里,我使用PUT而不是POST,因为这个操作是幂等的,而且客户端给出了URL
删除/银行/约翰
获得/银行/约翰
账户取钱
邮政/银行/约翰
action=withdraw&value=10
邮政/银行/约翰
action=credit&value=10
在这里,我使用POST,因为取款/信用显然不是幂等的。
这是设计这些操作的一种符合RESTful的方法吗?
我有一种感觉,我正在写一些类似RPC的东西-通过在action参数中放入动词(取回\信用)。我经常读到REST不应该模仿RPC的风格.
发布于 2012-03-02 23:00:23
在处理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这可以返回准确交易的记录(例如,您的用户通常希望在他们的帐户上记录借方和贷方)。
发布于 2012-03-02 21:47:15
我不认为你应该加上"action=credit&value=10“的东西。您可以创建更多/更长的URI。例如:
create an account: POST /Bank/Accounts/John
credit money to an account: POST /Bank/John/Money/10https://stackoverflow.com/questions/9540653
复制相似问题