2012-01-09 3 views
4

RESTを完全にサポートするブラウザはどれですか? メソッドの取得、投稿、PUT、および削除メソッドを意味しますか?どのブラウザがRESTを完全にサポートしていますか。は、メソッドを取得、投稿、PUTと削除方法を意味する?

私はPUTとDELETE理解するためのレールの道が

<form id="form_id" action="" method="PUT" > 
    -- form content -- 
    </form> 

方法= "PUT" のような "_method" 隠れ変数である理解?

私は間違っていると思いますか?

+0

基本的に、WebブラウザはフォームでGET/POSTのみを使用でき、RailsはPOSTリクエストでPUT/DELETEメソッドをトンネリングすることでこれを処理します。 (ビニーの答えを見てください)。これをチェックして正しいフォームを作成してください:http://guides.rubyonrails.org/form_helpers.html – basgys

答えて

9

ブラウザからHTTP PUTまたはDELETE操作を呼び出す多くのRESTフレームワークは、「オーバーロードされたPOST」として知られているものによって実現できます。これは、使用するべき実際のHTTPメソッドを指定しているURLにいくつかの情報を追加してPOSTリクエストとしてブラウザからサーバーにリクエストを送信することを意味します。

私は、Restletフレームワークがこのアプローチに従っていることを知っています.Railsも同様です。

あなたはREST APIはこのようにdefineedしているのであれば:

  • POST - http://myservice/myobjectを - >は、新しいオブジェクトを作成し、 は、オブジェクトID
  • GET - http://myservice/myobject/id返す - > がオブジェクト
  • PUT - http://myservice/myobject/idを返します - > オブジェクトを更新します
  • DELETE - http://myservice/myobject/id - > はオブジェクトを削除します
  • >がサポートされていないFlexのためのオブジェクト実際に

を、削除 - >オブジェクト

  • POST - http://myservice/myobject/id?method=DELETEを更新 - あなたは

    • POST - http://myservice/myobject/id?method=PUTもブラウザからオーバーロードPOSTを可能性が使っ

    これらのREST操作を呼び出す唯一の方法は、PUTまたはDELETEです。

  • +0

    ありがとうビニー! –

    +0

    @Vinnie Rails&RestletはPUTリクエストとDELETEリクエストをPOSTリクエストに変換して、マジックフィールドを使ってサーバーにリクエストの処理を指示しているので、POSTリクエストを常に使っていたWebアプリケーションサーバーに何をすべきかを伝えるフィールド?後者のアーキテクチャーは、RESTが取り除くことを目的とした主要なものではありませんか? – Jazz

    +0

    可能であれば、ネイティブのPUTまたはDELETEを使用することをお勧めします。過負荷POSTが行われるのは、これらのHTTP操作をサポートしないテクノロジからPUT操作またはDELETE操作を呼び出す場合です。 Flexはこのような技術の1つで、GETとPOSTだけをサポートしています。ブラウザによっては同じ制限があります。これらは、「正しい」REST API操作の代わりに、オーバーロードされたPOSTが使用される例外です。 – Vinnie

    -4

    PUTとDELETEは仕様に過ぎず、ブラウザやWebサーバーによって実装されていません。

    したがって、リクエストを送信する場合は、PUTまたはDELETEをサポートするRESTful Webサービスを設計しないでください。

    +1

    「PUTまたはDELETEをサポートするRESTful Webサービスを設計しないでください」は設計上の選択肢ではなく、誰でもRESTful APIを開発しています。これらのHTTPメソッド(PUTとDELETE)は、RESTful Webサービスをどのように定義して、どのようにサービスを使用するかを理解できるようにするための必須要素です。 http://en.wikipedia.org/wiki/Representational_state_transfer#RESTful_web_services – Vinnie

    1

    この質問はこの回答とほぼ同じです:Are the PUT, DELETE, HEAD, etc methods available in most web browsers?、 素晴らしい回答があります。

    また、「GET、POST、PUT、DELETE」は「REST」ではありません。 HTTP仕様では4つすべてが異なるメソッドであり、RESTはこれらの4つを使用するアーキテクチャスタイルです。

    関連する問題