Если вы хотите сделать что-то другое, кроме CRUD-операций с Spring Data REST, вам нужно будет использовать Spring MVC до define a custom controller. Логика обработки будет идти внутри контроллера, и вы будете обрабатывать любую экономию ресурсов самостоятельно с помощью репозитория.
Альтернативная идея для чего-то более весеннего-данных-стиля отдыха (и я не тестировал это) - использовать Spring Data REST events. Это напрямую подключается к системе и может позволить вам выполнять дополнительную работу, не определяя собственный контроллер/etc.
@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 На самом деле, я следую API-интерфейсу PayPal REST. Перейдите на страницу https://developer.paypal.com/docs/api/#execute-an-approved-paypal-payment. Кроме того, Stripe делает аналогичную вещь https://stripe.com/docs/api#capture_charge. Как PayPal & Stripe заявляют, что их API API REST –
Спасибо за обновление, теперь это имеет больше смысла. Это интересный выбор дизайна. Для меня более понятным было бы что-то вроде «POST/payments /: id/transaction». Решение выглядит скорее как услуга, чем «обычный» ресурс. Вот почему я думаю, что было бы лучше (и, может быть, проще) создать контроллер для этого действия. Чтобы реализовать его с помощью Spring Data REST, вам понадобится независимый ресурс 'execute' afaik, и это не имеет большого смысла. – zeroflagL