2012-10-17 30 views
7

Câu hỏi đơn giản: nếu tôi KHÔNG gửi dữ liệu (nội dung) qua phương thức HTTP POST/PUT trên tài nguyên của tôi - nó vẫn còn là RESTful?PUT không có dữ liệu, có phải là RESTful không?

Rõ ràng, câu hỏi là trong trường hợp nào tôi muốn sử dụng PUT mà không có dữ liệu. Hãy tưởng tượng người dùng muốn đặt lại mật khẩu của họ (như trong số this older topic).

Bạn nghĩ sao về điều này? Có được không gửi nội dung bằng các phương thức POST/PUT không? Cá nhân tôi không có vấn đề với nó nhưng tôi chỉ tò mò những gì người khác sẽ nói.

Trả lời

5

Có, điều này hoàn toàn có thể chấp nhận được. Mỗi hành động (POST tới một bộ sưu tập, PUT đến một tài nguyên) khi được thực hiện mà không có dữ liệu sẽ tạo một tài nguyên "rỗng" mới. Định nghĩa về "trống rỗng" ở đây sẽ phụ thuộc vào những gì đang được đại diện.

Trong trường hợp cụ thể về đặt lại mật khẩu của người dùng, tuy nhiên, tôi sẽ không nói rằng mô hình ở trên được áp dụng. Nếu thực sự có một tài nguyên mật khẩu, một PUT không có dữ liệu dường như đề nghị thiết lập mật khẩu để trống, thay vì đặt lại nó. Đối với kịch bản này, tôi sẽ đi với câu trả lời được chấp nhận từ câu hỏi đó.

3

Bạn không cần dữ liệu trong POST hoặc PUT để nó được Restful. Nếu bạn đang làm một cái gì đó không phải là Idempotent (có nghĩa là yêu cầu sẽ sửa đổi hoặc tạo ra một tài nguyên), bạn không muốn sử dụng GET (cho dù có bất kỳ dữ liệu nào để vượt qua hay không). Ví dụ, bạn có thể có một dịch vụ web RESTful xem xét thời gian của yêu cầu và url tài nguyên được nhấn như tất cả những gì cần để tạo hoặc sửa đổi một số tài nguyên - không cần dữ liệu yêu cầu!

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