PATCH
các yêu cầu mô tả một tập hợp các hoạt động được áp dụng cho một tài nguyên, nếu bạn áp dụng cùng một tập hợp các hoạt động hai lần cho cùng một tài nguyên, kết quả có thể không giống nhau. Điều này là do việc xác định các hoạt động là tùy thuộc vào bạn. Nói cách khác, bạn phải xác định các quy tắc hợp nhất .
Hãy nhớ rằng một PATCH
yêu cầu có thể được sử dụng để vá tài nguyên ở nhiều định dạng khác nhau, không chỉ JSON.
Vì vậy, một PATCH
yêu cầu có thể là idempotent nếu bạn xác định các quy tắc hợp nhất là idempotent .
Ví dụ tạm thời:
// Original resource
{
name: 'Tito',
age: 32
}
// PATCH request
{
age: 33
}
// New resource
{
name: 'Tito',
age: 33
}
Ví dụ không bình thường:
// Original resource
{
name: 'Tito',
age: 32
}
// PATCH request
{
$increment: 'age'
}
// New resource
{
name: 'Tito',
age: 33
}
Trong ví dụ thứ hai, tôi đã sử dụng cú pháp "Mongo like" mà tôi đã tạo ra để tăng một thuộc tính. Rõ ràng đây không phải là idempotent, vì gửi cùng một yêu cầu nhiều lần sẽ dẫn đến kết quả khác nhau mỗi lần.
Bây giờ bạn có thể tự hỏi nếu sử dụng một cú pháp tạo nên như vậy là hợp lệ. Theo tiêu chuẩn , đó là:
Sự khác biệt giữa các yêu cầu PUT và PATCH được phản ánh trong cách máy chủ xử lý thực thể kèm theo để sửa đổi tài nguyên được xác định bởi URI yêu cầu. Trong yêu cầu PUT, thực thể kèm theo được coi là phiên bản sửa đổi của tài nguyên được lưu trữ trên máy chủ gốc và máy khách đang yêu cầu thay thế phiên bản đã lưu trữ. Tuy nhiên, với PATCH, thực thể kèm theo chứa một tập hợp các hướng dẫn mô tả cách tài nguyên hiện đang cư trú trên máy chủ gốc nên được sửa đổi để tạo ra một phiên bản mới.
Và bạn cũng có thể tự hỏi liệu có an tâm khi sử dụng PATCH
các yêu cầu theo cách này hay không, và nhiều người cho rằng chúng không phải, đây là một câu trả lời tốt với nhiều ý kiến về vấn đề này.
{"name": "bendjamin franklin"}