2015-04-18 67 views
0

總之,我要創建這些API的RESTful端點如何在Spring Data Rest中添加POST/payments /:id/execute?

  1. POST /payments
  2. GET /payments/:id
  3. POST /payments/:id/execute =>收費付款人&改變statusexecuted

1st2nd端點可以容易地實現,但如何落實3rd

+0

POST/payments /:id/execute'如何成爲RESTful? – zeroflagL

+0

@zeroflagL其實,我遵循PayPal REST API。請查看https://developer.paypal.com/docs/api/#execute-an-approved-paypal-payment。另外,Stripe也會做類似的事情https://stripe.com/docs/api#capture_charge。 PayPal和Stripe聲稱他們的API是REST API –

+0

感謝您的更新,現在它變得更有意義。這是一個有趣的設計選擇。對於我來說'POST/payments /:id/transactions'會更有意義。該解決方案看起來更像是一種服務,而不是「常規」資源。這就是爲什麼我認爲爲該行爲創建控制器會更好(也許更容易)的原因。要用Spring Data REST實現它,你需要一個獨立的'execute'資源afaik,這沒什麼意義。 – zeroflagL

回答

1

如果您想使用Spring Data REST執行CRUD操作以外的操作,則需要使用Spring MVCdefine a custom controller。您的處理邏輯將進入控制器內部,您將使用存儲庫自行處理任何資源保存。

對於更多的spring-data-rest-style(我還沒有測試過)的另一種想法是使用Spring Data REST events。這直接掛鉤到系統中,並且可能允許您在不定義自己的控制器/等的情況下執行額外的工作。

@RepositoryEventHandler 
public class TransactionEventHandler { 

    @HandleBeforeSave 
    public void handlePersonSave(Transaction incoming) { 
    // call paypal, stripe, etc 
    // flag incoming transaction as unsuccessful if the underlying transaction failed 
    } 
} 
相關問題