Nói chung, bạn có một điểm cuối đại diện cho toàn bộ bộ sưu tập của x :
/products
Này, bạn muốn cập nhật một sản phẩm duy nhất, bạn thực hiện một PUT để /products/{id}
. Nếu bạn muốn cập nhật một phần một sản phẩm (không cập nhật mọi lĩnh vực), bạn cũng có thể sử dụng một BƯỚC để /products/{id}
. Điều tương tự cũng xảy ra đối với việc xóa một thực thể duy nhất ( XÓA đến /products/{id}
).
Nếu bạn muốn nhắm mục tiêu một nguồn tài nguyên duy nhất , bạn đủ điều kiện thông qua đường dẫn, đó là nguồn tài nguyên duy nhất , bạn muốn sửa đổi.
Hành động duy nhất phá vỡ sơ đồ là tạo ra một nguồn tài nguyên. Khi tạo một ressource bạn nhắm mục tiêu các bộ sưu tập như một toàn thể, nói POST để /products
.
Điều đó nói rằng, cần phải rõ ràng, rằng mục tiêu cho các hoạt động ảnh hưởng đến toàn bộ bộ sưu tập, nên đi đến điểm cuối của bộ sưu tập thích hợp.
Ví dụ: bạn muốn truy xuất một tập hợp con các sản phẩm có màu đỏ, bạn yêu cầu nó bằng cách
GET để /products?colour=red
.
Vì vậy, nếu bạn muốn xóa tất cả những thứ này, bạn XÓA /products?colour=red
. Hoặc nếu bạn muốn xóa một số sản phẩm thông qua id
, bạn có thể XÓA /products?id=1&id=2&id=3
.
Điều gì về việc tạo ra số lượng lớn các nguồn tài nguyên? POST bộ sưu tập của bạn [{...},{...},{...}]
chỉ đơn giản là để /products
. Điều tương tự cũng xảy ra với PUT và PATCH .
Điều đó thực sự đơn giản.
Để trả lời câu hỏi của bạn:
Nếu tôi cần thêm vào bộ sưu tập, tôi có thể chỉ chuyển một số sản phẩm với PUT không?
Nó không chỉ OK, bạn được khuyến khích làm điều đó như thế.
Nếu tôi cần xóa một số sản phẩm khỏi bộ sưu tập, tôi có thể chuyển dữ liệu bộ lọc (một mảng ID) bằng DELETE không?
Vậy được rồi. Như Eneko Alonso đã viết, đôi khi có các hoạt động hàng loạt được gói gọn thông qua các điểm phụ "bộ điều khiển", tức là POST được sử dụng để kích hoạt các hoạt động (phức tạp).