2009-03-22 12 views
6

Tôi không gettng điều RESTful. Có, tôi biết cách gửi yêu cầu GET đến ứng dụng của tôi từ trình duyệt của tôi. Đó là thông qua liên kết URL.Làm cách nào để gửi bất kỳ thứ gì bên cạnh GET và POST từ trình duyệt đến ứng dụng RESTful của bạn?

<a href="/user/someone"> 

Và cũng có thể gửi yêu cầu POST thông qua phương thức biểu mẫu.

<form method="post"> 

Bên cạnh đó tôi biết trình duyệt đôi khi gửi lệnh HEAD để tìm trạng thái trang nhưng người dùng cuối không có quyền kiểm soát.

Sau đó, các lệnh DELETE và PUT tôi đang đọc là gì? Làm thế nào để bạn gửi, ví dụ lệnh DELETE từ trình duyệt của bạn đến ứng dụng RESTful của bạn?

Trả lời

5

các HTML 4.01 specification chỉ mô tả GETPOST như valid values for the method attribute. vì vậy, trong HTML không có cách mô tả khác phương pháp này hơn bây giờ.

Nhưng HTML 5 specification (hiện chỉ là bản nháp làm việc) có tên PUTDELETEvalid values.

Nhìn vào (hiện tại chỉ là một dự thảo làm việc quá) XMLHttpRequest object specification sử dụng cho các yêu cầu không đồng bộ trong JavaScript (AJAX), it supports the PUT and DELETE methods quá, nhưng không nói bất cứ điều gì về sự ủng hộ thực tế bởi các trình duyệt hiện nay.

+0

Xem http://stackoverflow.com/questions/ 165779 để biết thông tin về hỗ trợ trình duyệt. – Chuck

+0

lần cuối cùng tôi đã thử http://www.mail-archive.com/[email protected]/msg00336.html không đủ hỗ trợ để xây dựng ứng dụng khách web-dav ajax. Nhưng tôi đã nhận được spec thay đổi để các đại lý nên hỗ trợ các phương pháp an toàn phổ biến. –

2

Tôi đã nghe nói rằng DELETE và PUT không được hỗ trợ đầy đủ trong tất cả các trình duyệt (tôi đã không kiểm tra). Rails đang thực hiện giải pháp thay thế - nó đang gửi POST với một trường ẩn chứa phương thức thực. Vì vậy, nó thực sự chỉ sử dụng GET và POST và trên máy chủ nó đọc lĩnh vực này ẩn và phản ứng trên nó.

1

Ứng dụng dựa trên Flash (hoặc Flex) có thể hoạt động ở các cấp thấp hơn, như ổ cắm mở. Họ cũng có thể làm PUT/DELETE (mặc dù Flex nói riêng được biết là có vấn đề với tiêu đề http. Vì vậy, tôi đoán tôi đang nói nó phụ thuộc vào công nghệ khách hàng của bạn. Đặc biệt, bạn có thể nhúng một đối tượng flash nhỏ có thể làm thông tin liên lạc cho bạn nếu trình duyệt của bạn không hỗ trợ nó (hoặc bạn không muốn thực hiện hỗ trợ trình duyệt chéo).

3

Để mô phỏng PUT và DELETE, các khuôn khổ như Rails thay vì xây dựng các hình thức như thế này:

<form action="https://stackoverflow.com/users/1/delete" method="post"> 
    <input type="hidden" name="_method" value="delete" /> 
    <input type="submit" value="Delete user 1" /> 
</form> 

Điều này thực sự là một hình thức POST, nhưng sử dụng ẩn _method đầu vào bảo với máy chủ mà phương pháp đã thực sự mong muốn. Bạn cũng có thể triển khai hỗ trợ này trên bất kỳ khung công tác web nào khác.

2

Bài đăng không phải thông qua biểu mẫu. Cách tốt nhất để tìm hiểu về điều này, và cũng GET, PUT và DELETE là sử dụng một máy khách ReST để thực hiện các yêu cầu HTTP của bạn và xem các câu trả lời. Tôi khuyên bạn nên tải xuống ứng dụng khách python nhỏ tiện lợi từ http://restclient.org/

Trình duyệt là (hiện tại) không phải là công cụ tốt nhất để bạn sử dụng khi bạn quen với ReST. Một ứng dụng khách như ở trên sẽ cho phép bạn "xem" các yêu cầu và phản hồi HTTP của bạn.

3

@C Moran là đúng: nếu bạn muốn thực sự yên tĩnh, trình duyệt không phải là một ứng dụng khách lý tưởng, một phần do thiếu phương thức HTTP ngoài GETPOST. Tuy nhiên, nếu bạn thực sự muốn làm điều đó từ trình duyệt, bạn có thể sử dụng AJAX để gửi PUT s và DELETE s, ví dụ:YUI's Connection Manager cho phép bạn chỉ định bất kỳ phương pháp HTTP sau:

  • GET
  • POST
  • HEAD
  • PUT
  • DELETE
Các vấn đề liên quan