首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RESTful兼容设计

RESTful兼容设计
EN

Stack Overflow用户
提问于 2012-03-02 21:31:37
回答 2查看 1.7K关注 0票数 2

让我们考虑一下,我需要开发一个REST银行应用程序,它允许创建/销毁银行帐户以及帐户上的以下操作:取款/信贷/getBalance。

  • 创建帐户

PUT /Bank/john

在这里,我使用PUT而不是POST,因为这个操作是幂等的,而且客户端给出了URL

  • 销毁帐户

删除/银行/约翰

  • GetBalance

获得/银行/约翰

账户取钱

邮政/银行/约翰

action=withdraw&value=10

  • 把钱贷给账户

邮政/银行/约翰

action=credit&value=10

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

这是设计这些操作的一种符合RESTful的方法吗?

我有一种感觉,我正在写一些类似RPC的东西-通过在action参数中放入动词(取回\信用)。我经常读到REST不应该模仿RPC的风格.

EN

回答 2

Stack Overflow用户

发布于 2012-03-02 23:00:23

在处理REST时,从资源的角度出发通常是有帮助的。在这种情况下,您的资源不仅仅是您的“银行帐户”,而是该银行帐户的交易。

存款

代码语言:javascript
复制
POST /Bank/Account/John/Transaction

currency=USD&amount=10

撤走

代码语言:javascript
复制
POST /Bank/Account/John/Transaction

currency=USD&amount=-10

您的响应应该包括这个新创建的事务的Location头。

您正在创建一个事务。这样做的好处是,您可以将该事务作为资源引用。

代码语言:javascript
复制
GET /Bank/Account/John/Transaction/12345

这可以返回准确交易的记录(例如,您的用户通常希望在他们的帐户上记录借方和贷方)。

票数 3
EN

Stack Overflow用户

发布于 2012-03-02 21:47:15

我不认为你应该加上"action=credit&value=10“的东西。您可以创建更多/更长的URI。例如:

代码语言:javascript
复制
create an account: POST /Bank/Accounts/John
credit money to an account: POST /Bank/John/Money/10
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9540653

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档