Http RESTful兼容设计 请考虑我需要开发一个REST银行应用程序。 允许创建/销毁银行帐户以及 对帐户执行以下操作:取款/贷记/获取余额 创建帐户

Http RESTful兼容设计 请考虑我需要开发一个REST银行应用程序。 允许创建/销毁银行帐户以及 对帐户执行以下操作:取款/贷记/获取余额 创建帐户,http,rest,post,soa,Http,Rest,Post,Soa,放/存/存/约翰 这里我使用PUT而不是POST,因为这个操作是 幂等和,因为客户端提供了URL 销户 删除/Bank/john 获得平衡 得到/银行/约翰 从帐户中取款 邮局/银行/约翰 行动=撤回&价值=10 赊账 邮局/银行/约翰 行动=信用和价值=10 在这里,我使用POST是因为取款/贷记显然不是幂等的 这是设计这些操作的RESTful兼容方式吗 我有一种感觉,我在写一些类似RPC的东西,把动词(撤回|信用)放在里面 操作参数。。我经常读到REST不应该模仿RPC风格…

放/存/存/约翰

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

  • 销户
删除/Bank/john

  • 获得平衡
得到/银行/约翰

  • 从帐户中取款
邮局/银行/约翰

行动=撤回&价值=10

  • 赊账
邮局/银行/约翰

行动=信用和价值=10

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

这是设计这些操作的RESTful兼容方式吗

我有一种感觉,我在写一些类似RPC的东西,把动词(撤回|信用)放在里面
操作参数。。我经常读到REST不应该模仿RPC风格…

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

create an account: POST /Bank/Accounts/John
credit money to an account: POST /Bank/John/Money/10

我认为你不应该加上“行动=信用&价值=10”之类的东西。您可以创建更多/更长的URI。 例如:

create an account: POST /Bank/Accounts/John
credit money to an account: POST /Bank/John/Money/10

在处理REST时,通常从资源的角度考虑开始会有所帮助。在这种情况下,您的资源不仅仅是您的“银行账户”,而是该银行账户的交易

存款

POST /Bank/Account/John/Transaction

currency=USD&amount=10
撤回

POST /Bank/Account/John/Transaction

currency=USD&amount=-10
您的响应应该包括此新创建事务的
位置
标题

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

GET /Bank/Account/John/Transaction/12345

这可能会返回该确切交易的记录(例如,您的用户通常希望在其帐户上记录借项和贷项)。

在处理REST时,通常从资源的角度考虑,这有助于开始。在这种情况下,您的资源不仅仅是您的“银行账户”,而是该银行账户的交易

存款

POST /Bank/Account/John/Transaction

currency=USD&amount=10
撤回

POST /Bank/Account/John/Transaction

currency=USD&amount=-10
您的响应应该包括此新创建事务的
位置
标题

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

GET /Bank/Account/John/Transaction/12345

这可能会返回该确切交易的记录(例如,您的用户通常希望在其帐户上记录借项和贷项)。

我认为您需要删除动作动词并完全依赖(尽可能多地)HTTP方法来表示设计就是REST。我认为您需要删除动作动词并完全依赖(尽可能)在HTTP方法上说设计就是REST。感谢nategood。我必须承认,这种设计方式对我来说并不自然(我来自CORBA世界…),但我认为您的解决方案尊重REST体系结构原则。您可能还希望存款和取款有效地幂等(您希望事务发生两次)。这可以通过在“草稿”状态下创建事务并要求更新(PUT)来相当轻松地完成另外,为了让你的API真正RESTful,你需要在响应中包含链接和表单。更多详细信息请访问感谢nategood。我必须承认,这种设计方式对我来说并不自然(我来自CORBA世界…)但我认为您的解决方案尊重REST体系结构原则。您可能还希望使存款和取款有效等幂(您希望交易发生两次)。这可以通过创建处于“草稿”状态的交易并要求更新(PUT)来相当轻松地完成承诺。另外,为了让你的API真正RESTful,你需要在回复中包含链接和表单。更多细节肯定会起作用…但就我所理解的原则而言,你的解决方案也会违反这些原则…POST对贷记资金有效。你会用什么来取款?我想你可以发布一个负面的v价值。但这似乎有点奇怪。当然它会起作用……但就我所理解的原则而言,你的解决方案也会违反这些原则……POST用于贷记资金。你会用什么来取款?我猜你可以发布负值。但这似乎有点奇怪。