Ruby on Rails REST设计问题 - 在账户之间转移资金

时间:2010-12-08 17:44:38

标签: ruby-on-rails rest accounting

我有一个帐户类,想要实现转移屏幕,以允许用户在两​​个帐户之间转账。

我如何以RESTfull方式实现这个?

我有标准帐户和休息操作,没关系。但是我如何实施转让?

通常我只是添加一个名为“transfer”的方法(调用渲染屏幕)和“transfer_update”(调用提交)到帐户控制器和相应的视图,但我不认为这是非常RESTfull。

感谢 乔尔

3 个答案:

答案 0 :(得分:3)

您提到了您的帐户类,但没有提到代表帖子或日记帐的类。请参阅http://homepages.tcp.co.uk/~m-wigley/gc_wp_ded.htmlArchived)。

使用引用网站的语言,为转移创建的“资源”是日记帐(条目),由两个过帐组成,每个过帐到不同的帐户。所以你想要一个JournalsController。要添加传输,您将POST到JournalsController的索引操作。参数包括日期,金额,debit_account,credit_account,收款人,备忘录等。

在AccountsController上使用REST将用于创建,更新或删除帐户,而不是帐户包含的过帐(交易)。

答案 1 :(得分:3)

执行转移的宁静请求的示例。

POST /transfers HTTP/1.1
Host: restful.bank.com
Content-Type: application/json; charset=utf-8
Accept: application/json

{ "transfer": {
  "source_account_id": "9d2d894c242f391a",
  "destination_account_id": "83ac039d8302abd5"
  "amount": "$200.00"
} }

相应的回应。

HTTP/1.1 201 Created
Date: #{right-now}
Content-Type: application/json; charset=utf-8
Location: https://restful.bank.com/transfers/938ac39cb5ddccfa

{ "transfer": {
  "id": "938ac39cb5ddccfa",
  "href": "https://restful.bank.com/transfers/938ac39cb5ddccfa",
  "source_account_id": "9d2d894c242f391a",
  "destination_account_id": "83ac039d8302abd5"
  "amount": "$200.00"
} }

答案 2 :(得分:1)

本书RESTful Web Services有一个很好的例子,说明如何处理这个确切的问题,更好的是,例子在Rails中:)

如果你不能从图书馆查看,那该怎么办,只需买一下。它并不昂贵,它有很多关于如何实现REST和ROA的有用信息。