Cách "RESTful" để thêm các hoạt động không phải CRUD vào dịch vụ RESTful là gì? Giả sử tôi có một dịch vụ cho phép CRUD truy cập vào các bản ghi như sau:
GET /api/car/123 <- Returns information for the Car object with ID 123
POST /api/car <- Creates a new car (with properties in the request)
PUT /api/car/123 <- Updates car 123 (with properties in the request)
DELETE /api/car/123 <- Deletes car 123
POST /api/car/123/wheel/ <- Creates a wheel and associates it to car 123
Nếu tôi muốn thay đổi màu của chiếc xe, tôi chỉ cần POST /api/car/123
thêm một biến POST cho màu mới.
Nhưng giả sử tôi muốn mua một chiếc ô tô và thao tác đó phức tạp hơn là chỉ cập nhật tài sản “ô tô đã sở hữu” của bản ghi "người dùng". Nó có RESTful chỉ đơn giản là làm một cái gì đó như POST /api/car/123/purchase
, trong đó "mua" về cơ bản là một tên phương thức? Hay tôi nên sử dụng một động từ HTTP tùy chỉnh, như PURCHASE
thay vì POST
?
Hay các hoạt động không phải CRUD hoàn toàn nằm ngoài phạm vi của REST?
PATCH /api/car/123
và gửi thông số màu HOẶC sử dụngPUT /api/car/123
và gửi toàn bộ đối tượng ô tô. POST sẽ suy ra rằng bạn đang tạo một chiếc xe mới và có lẽ không bao giờ nên bao gồm một id vào cuối URL