2010-10-14 19 views

Trả lời

14

Thuật ngữ chính cho PUT cho tôi luôn là idempotent. Trong khi cho POST bạn luôn luôn "thêm một mục" vào trạng thái hệ thống, với PUT hành động là như nhau ngay cả khi nhiều lần thực hiện (vì bạn đang áp đặt một mục).

Ví dụ:

làm 100 lần POST/album = bạn sẽ kết thúc với 100 album khác nhau (nhưng với cùng một nội dung)

làm 100 lần PUT/album/123 = bạn sẽ kết thúc với một album duy nhất có id 123 (có nội dung)

+1

POST không cần thêm bất kỳ thứ gì. –

+0

Cũng giống như vậy và để làm rõ, đặc biệt là tham khảo câu trả lời của Victor, PUT là một tạo trên cuộc gọi đầu tiên và cập nhật sau đó. Vì vậy, nó vẫn là không đáng kể –

18

Được sử dụng cho cả hai. Quoth the RFC:

Phương pháp PUT yêu cầu thực thể kín được lưu trữ trong URI yêu cầu được cung cấp. Nếu URI yêu cầu đề cập đến một tài nguyên đã tồn tại, thực thể đính kèm NÊN được coi là phiên bản đã sửa đổi của một trong những phiên bản nằm trên máy chủ gốc. Nếu URI yêu cầu không trỏ đến một tài nguyên hiện có và URI đó có khả năng được định nghĩa là tài nguyên mới bởi tác nhân người dùng yêu cầu, máy chủ gốc có thể tạo tài nguyên với URI đó.

+0

Vì vậy, nói cách khác, chèn nếu không tồn tại - khác, hãy cập nhật. – Jnr

1

PUT thực sự được sử dụng để cập nhật nội dung, nhưng nếu bạn đã có id, bạn đang cập nhật. Trong REST nói chung, bạn muốn POST đến /albums (hoặc bất kỳ thứ gì) để tạo bản ghi mới với id chưa biết. Vì bạn có id, bạn đang cập nhật tài liệu trống với id đó thành nội dung bạn đang cung cấp.

1

PUT là tạo tài nguyên mới hoặc thay thế hoàn toàn khi bạn biết URI hiện tại hoặc URI mới sẽ là gì. POST là để cập nhật các phần của tài nguyên hiện có hoặc để tạo tài nguyên mới khi máy chủ phải gán URI mới. Nó đơn giản mà. Cả PUT và POST đều được sử dụng để tạo và cập nhật, nó không phải là về việc bạn đang tạo hay cập nhật, đó là về việc bạn đã biết URI hay bạn cần máy chủ để gán nó cho bạn.

Các vấn đề liên quan