最新のアプリの1つにRESTfulAPIを構築し終えたところです。また、リソースを列挙し、編集、作成、削除などを行うための単純なフォームとテーブルを構築する、単純な管理インターフェイスのスキャフォールディングクラスも構築しました。
リソースを更新および削除するために、クラスはPUTおよびDELETEのメソッドを含むフォームを出力します。これは非常に簡単です。
<form action="/posts/xxxxxxx" method="DELETE">
<input type="submit" value="Delete" />
</form>
そして
<form action="/posts/xxxxxxx" method="PUT">
<input type="text" name="username" value="nikcub" />
<input type="text" name="fullname" value="Nik Cubrilovic" />
<input type="text" name="email" value="[email protected]" />
<input type="submit" value="Update" />
</form>
とてもシンプルです。 Javascriptが検出されると、フォームをインターセプトし、XMLHTTPRequestを使用して送信します。 Javascriptは他のHTTPメソッドをサポートしていますが、最近のブラウザーがPUTメソッドとDELETEメソッドをサポートしていないのはなぜですか?最終的にGETを送信します。
アプリが標準のHTMLに正常にフォールバックするときに、クラスで非表示のフィールドとそのロジックを使用する代わりに、同じメソッドを使用することをお勧めします。さらに悪いことに、メソッドをURIに配置して、GETを機能させることもできます。 。
開発者はGETをハッキングするかPOSTを使用して回避しているだけなので、ブラウザが他のHTTPメソッドをサポートしない理由は考えられません。
答えを検索したところ、 XHTML 2.0仕様 の一部として指定されているものを見つけることができました。それについての言及はありません HTML5仕様で 。
「HTML5準拠」ブラウザでサポートされていない理由はありますか?このバックアップを開いてブラウザに実装するためのリクエストをどこに投稿できますか?
一部のWebフレームワーク(例:RailsのRuby)は、「実際の」メソッドの値を含むフォームに非表示の_method
パラメーターを含めることでこれを回避します。例:
<form action="/posts/xxxxx" method="POST">
<input type="hidden" name="_method" value="DELETE">
<input type="submit" value="delete">
</form>
次に、フレームワークは、処理する前にサーバー側で要求を書き換えて、HTTPメソッドとして_method
パラメーターの値を使用します。
これがあなたを助けるかどうかわからない。
HTML 4.01は、投稿と取得のみをサポートしています。 http://www.w3.org/TR/html4/interact/forms.html#h-17. を参照してください。他のHTML仕様については不明です。
実際、私はごく少量の調査を行い、他のStackexchangeフォーラムでこの回答を見つけました。
リンクを投稿するのは良い答えではないことは知っていますが、正確な答えはわかりません。だから、それはあなたがあなたの疑問を解決することができる唯一の方法です。