2009-03-22 8 views
6

私はRESTfulなことを取得していません。はい、私はブラウザから私のアプリにGET要求を送る方法を知っています。それはURLリンクを介してです。GETとPOSTの横にあるものは、ブラウザからRESTfulアプリにどのように送信しますか?

<a href="/user/someone"> 

また、POSTメソッドをフォームメソッドで送信することもできます。

<form method="post"> 

私は、ブラウザーがページステータスを把握するためにHEADコマンドを送信することがありますが、エンドユーザーは制御できないことがわかります。

次に、私が読んでいるDELETEコマンドとPUTコマンドは何ですか?たとえば、ブラウザからRESTfulアプリケーションにDELETEコマンドを送信するにはどうすればよいですか?

答えて

5

HTML 4.01 specificationだけGETvalid values for the method attributeとしてPOSTについて説明します。他の記述の方法はありませんHTMLでそうこれよりも今の方法よりも小さい。

(現行の草案)は、PUTDELETEvalid values。 (あまりにも現在は単なる作業草案)XMLHttpRequest object specificationに見ると

ものJavaScript(AJAX)、it supports the PUT and DELETE methodsでの非同期要求のために使用されるが、現在のブラウザによって、実際のサポートについては何も言いません。

+0

http://stackoverflow.com/questions/を参照してください。 165779ブラウザサポートに関する情報 – Chuck

+0

前回私はhttp://www.mail-archive.com/[email protected]/msg00336.htmlを試しましたが、ajax web-davクライアントを構築するのに十分なサポートがありませんでした。しかし、エージェントが共通の安全な方法をサポートするように仕様を変更しました。 –

2

DELETEとPUTがすべてのブラウザで完全にサポートされていないと聞いたことがあります(確認しませんでした)。 Railsは回避策を行っています - 実際のメソッドを含む隠しフィールドをPOSTに送信しています。したがって、実際にはGETとPOSTのみを使用し、サーバー上ではこの隠されたフィールドを読み取り、それに反応します。

1

Flashベースのアプリケーション(またはFlex)は、オープンソケットのような低レベルで動作します。また、PUT/DELETEを実行することもできます(特にFlexではhttpヘッダーに問題があることが知られています)。 クライアントの技術に依存していると思います。あなたのための通信は、あなたのブラウザがそれをサポートしていない場合(または、あなたはクロスブラウザのサポートを実装する必要はありません)。

3

PUTをシミュレートし、DELETE、Railsのようなフレームワークではなく、このようなフォームを作成するには:

<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> 

これは実際にはPOSTフォームですが、実際に意図された方法でサーバーを伝えるために隠された_method入力を使用します。このサポートは他のWebフレームワークでも実装できます。

2

POSTはフォームを経由している必要はありません。これを学び、GET、PUT、DELETEについて学ぶ最も良い方法は、ReSTクライアントを使ってHTTPリクエストを作成し、その応答を見ることです。私はちょっとした小さなPythonクライアントをダウンロードすることをお勧めします。http://restclient.org/

ブラウザは、あなたがReSTを知っている間、あなたの最良のツールではありません。上記のようなクライアントは、あなたのHTTPリクエストとレスポンスを "見る"ことができます。

3

@C Moranが正しいです:本当にRESTfulにしたいのであれば、ブラウザは、GETPOSTを超えるHTTPメソッドが欠けているために、理想的なクライアントではありません。ただし、実際にブラウザから操作したい場合は、AJAXを使用してPUT秒とDELETE秒を送信することができます。YUI's Connection Managerでは、次のHTTPメソッドのいずれかを指定することができます:

  • GET
  • POST
  • HEAD
  • PUT
  • DELETE
関連する問題