0
總之,我要創建這些API的RESTful端點如何在Spring Data Rest中添加POST/payments /:id/execute?
POST /payments
GET /payments/:id
POST /payments/:id/execute
=>收費付款人&改變status
到executed
。
的1st
和2nd
端點可以容易地實現,但如何落實3rd
?
總之,我要創建這些API的RESTful端點如何在Spring Data Rest中添加POST/payments /:id/execute?
POST /payments
GET /payments/:id
POST /payments/:id/execute
=>收費付款人&改變status
到executed
。的1st
和2nd
端點可以容易地實現,但如何落實3rd
?
如果您想使用Spring Data REST執行CRUD操作以外的操作,則需要使用Spring MVC至define 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
}
}
POST/payments /:id/execute'如何成爲RESTful? – zeroflagL
@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 –
感謝您的更新,現在它變得更有意義。這是一個有趣的設計選擇。對於我來說'POST/payments /:id/transactions'會更有意義。該解決方案看起來更像是一種服務,而不是「常規」資源。這就是爲什麼我認爲爲該行爲創建控制器會更好(也許更容易)的原因。要用Spring Data REST實現它,你需要一個獨立的'execute'資源afaik,這沒什麼意義。 – zeroflagL