2010-12-08 5 views
3

저는 계좌 클래스를 가지고 있는데, 사용자가 2 계좌 사이에서 돈을 송금 할 수 있도록 송금 화면을 구현하려고합니다.Ruby on Rails REST 디자인 질문 - 계좌 간 돈을 송금합니다.

어떻게하면 RESTfull 방식으로 구현할 수 있습니까?

표준 계정과 나머지 조치가 있습니다. 괜찮습니다. 하지만 양도는 어떻게해야합니까?

일반적으로 나는 (화면에 렌더링하기 위해 호출 된) "transfer"라는 메소드와 "transfer_update"(submit시에 호출 된) 메소드를 계정 컨트롤러와 해당 뷰에 추가하지만 이것은 매우 RESTfull이라고 생각하지 않습니다.

감사 조엘

답변

3

귀하의 계정 클래스는 언급했지만 게시 또는 저널을 나타내는 클래스는 언급하지 않았습니다. http://homepages.tcp.co.uk/~m-wigley/gc_wp_ded.html (Archived)을 참조하십시오.

참조 된 사이트의 언어를 사용하여 전송을 위해 생성되는 "자원"은 각기 다른 계정에 대한 두 개의 게시물로 구성된 저널 (항목)입니다. 그래서 당신은 JournalsController를 원할 것입니다. 전송을 추가하려면 JournalsController의 인덱스 조치에 POST합니다. 매개 변수에는 날짜, 금액, debit_account, credit_account, 수취인, 메모 등이 포함됩니다.

AccountsController에서 REST를 사용하면 계정에 포함 된 전기 (트랜잭션)가 아닌 계정을 생성, 업데이트 또는 삭제할 수 있습니다.

1

RESTful Web Services이 정확한 문제를 접근하는 방법의 좋은 예를 가지고 있으며, 무엇을 더 나은 예제가 레일 :

당신이에서 체크 아웃 할 수없는 경우에 도서관, 도대체, 그냥 물건을 사다. 그것은 비싸지 않고 REST와 ROA를 구현하는 방법에 대한 많은 유용한 정보를 가지고 있습니다.

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" 
} } 
+0

하지만 여기서 "동사"라는 동사가 사용되었는데, 그것이 REST가 아니라는 신호입니까? – jhegedus

+1

@jhegedus "transfer"라는 단어는 동사가 아닌 명사로 사용됩니다. – yfeldblum