Tôi đang trong quá trình thiết kế API HTTP, hy vọng làm cho nó trở nên RESTful nhất có thể.
Có một số hành động mà chức năng trải rộng trên một vài tài nguyên và đôi khi cần phải hoàn tác.
Tôi tự nghĩ, điều này nghe giống như một mẫu lệnh, nhưng làm thế nào tôi có thể mô hình hóa nó thành một tài nguyên?
Tôi sẽ giới thiệu một tài nguyên mới có tên XXAction, như DepositAction, sẽ được tạo thông qua một cái gì đó như thế này
POST /card/{card-id}/account/{account-id}/Deposit
AmountToDeposit=100, different parameters...
điều này thực sự sẽ tạo một DepositAction mới và kích hoạt phương thức Do / Execute. Trong trường hợp này, trả về trạng thái HTTP được tạo 201 có nghĩa là hành động đã được thực hiện thành công.
Sau này nếu khách hàng muốn xem chi tiết hành động anh ta có thể
GET /action/{action-id}
Tôi đoán cập nhật / PUT sẽ bị chặn, vì nó không liên quan ở đây.
Và để hoàn tác hành động, tôi nghĩ đến việc sử dụng
DELETE /action/{action-id}
mà thực sự sẽ gọi phương thức Hoàn tác của đối tượng có liên quan và thay đổi trạng thái của nó.
Hãy nói rằng tôi hạnh phúc chỉ với một Do-Undo, tôi không cần Làm lại.
Cách tiếp cận này có ổn không?
Có bất kỳ cạm bẫy, lý do không sử dụng nó?
Điều này có được hiểu từ POV của khách hàng không?