Vấn đề ở đây là có rất nhiều cuộc thảo luận trên web về vấn đề này là một năm trở lên. Tôi đang làm việc thông qua nghiên cứu này ngay bây giờ, và đây là những gì tôi đã học được ngày hôm nay.
Điều này IBM Developer Works article from August 2008 bởi Jorge Rasillo và Mike Burr cho biết cách thực hiện ứng dụng Flex front-end/RESTful back-end (ví dụ trong PHP và Groovy). Bài viết hay. Dù sao, đây là việc lấy đi:
- Mã PHP/Groovy của họ sử dụng và mong đợi PUT và DELETE.
- Nhưng mã Flex phải sử dụng POST, nhưng đặt tiêu đề HTTP X-Method-Override thành DELETE (bạn có thể làm tương tự cho PUT I presume).
- Lưu ý rằng đây là không phải là phương thức Proxy được thảo luận ở trên.
// Flex doesn't know how to generate an HTTP DELETE.
// Fortunately, sMash/Zero will interpret an HTTP POST with
// an X-Method-Override: DELETE header as a DELETE.
deleteTodoHS.headers['X-Method-Override'] = 'DELETE';
gì đang xảy ra ở đây? máy chủ web của IBM chặn và diễn giải "POST with DELETE" dưới dạng DELETE.
Vì vậy, tôi đào sâu hơn và tìm thấy điều này post and discussion with Don Box (một trong những kẻ SOAP gốc). Rõ ràng đây là một hành vi khá chuẩn kể từ khi một số trình duyệt, vv không hỗ trợ PUT và DELETE, và là một công việc xung quanh đã được khoảng một thời gian. Đây là một đoạn trích, nhưng có nhiều cuộc thảo luận hơn.
"Nếu tôi đang xây dựng ứng dụng khách GData, tôi tự hỏi tại sao tôi lại bận tâm sử dụng phương thức DELETE và PUT cho rằng X-HTTP-Method-Override sẽ hoạt động trong nhiều trường hợp/triển khai hơn."
Tôi lấy đi điều này là nếu mặt web của bạn hỗ trợ tiêu đề X-Method-Override này, thì bạn có thể sử dụng phương pháp này. không khẳng định rằng chưa
Một vấn đề khác nảy sinh xung quanh việc có thể đọc các tiêu đề HTTP response Một lần nữa, từ a blog post in 2007 by Nathan de Vries, chúng tôi thấy điều này thảo luận Ông đã theo dõi rằng bài viết trên blog và thảo luận với lời nhận xét riêng của mình:...
"Sự thay đổi duy nhất trên mặt trận web là các phiên bản mới hơn của Flash Player (chắc chắn là những upplied với Flex 3 beta) bây giờ hỗ trợ tài sản responseHeaders trên trường hợp của HTTPStatusEvent. "
Tôi hy vọng rằng có nghĩa là nó không phải là vấn đề bây giờ.
Tôi nghĩ rằng cũng rất quan trọng để tự hỏi liệu khách hàng sử dụng "X-HTTP-Method-Override" mất một số lợi ích của REST. Cách tiếp cận này có thực sự khác với đường hầm qua HTTP không? Bạn không bị mất khả năng tận dụng proxy caching và các lợi ích khác như vậy? – Gili
Nếu bạn nhìn vào đây http://www.w3.org/Protocols/rfc2616/rfc2616-sec13.html tại phần 13.10 bạn sẽ thấy rằng PUT, DELETE và POST tất cả đều làm cho mục nhập bộ nhớ cache bị vô hiệu. Vì vậy, bất kể bạn sử dụng đúng động từ hoặc POST cộng với X-HTTP-Method-Override, bạn sẽ có tác dụng tương tự trên bộ nhớ cache. –
@Gili Để trả lời câu hỏi đầu tiên của bạn, không bạn không mất bất kỳ lợi ích nào của REST. –