ウェブサービスでクライアントがを実行してを削除する場合、POSTリクエストを使用してもRESTfulと見なされますか?私のWebサービスでクライアントが** POST **リクエストを使用して**削除**を行うことを許可しても、まだRESTfulと見なされていますか?
答えて
厳密に言えば、私はまだそれをRESTfulと考えていますが、そうではないと思います。すべてのHTTP動詞を使用することができない場合があります。これにより、多くのREST APIがPOSTまたはGETを介して他のアクションを許可します。
公式のRESTful標準はないので、メソッドoverride =メソッドなどのパラメータで明示的に渡されている限り、問題ありません。
実用的な見地からは、クライアントが実装するのが容易ではないかもしれませんが、特に、それらがあいまいではなく、DELETEを行う方法がわからない場合は、短い答えはいいえです。
これはあなたのWebサービスだから、あなたのビジネスニーズに最も適したものを実行する必要があります。 RESTの完全な実装は、APIの操作方法に関する偉大なクライアントのドキュメントよりも重要ではありません。
これは流行語になっているため、APIが「RESTful」であるかどうかという疑問はありません。より重要な問題は、これがRFC 2616で定義されているHTTPプロトコルをうまく利用しているかどうかということです。関連するセクションはhttp://www.w3.org/Protocols/rfc2616/rfc2616-sec9.htmlです。
「POSTメソッドは、要求に含まれるエンティティを元のサーバーがRequest-LineのRequest-URIによって識別されるリソースの新しい従属として受け入れることを要求するために使用されます。 POSTは通常、コレクション内に新しい項目を作成したり、既存のリソースに注釈を付けるために使用されます。注釈を削除して注釈を付けるのは実際には禁止されておらず、安全性と冪等の問題はありませんが、POSTでの削除は意図したとおりのHTTPの使用ではありません。
つまり、リソース内で「削除フラグを設定する」ことでPOSTや既存のリソースを修正すると、現代のRESTful APIの実践に従うことになります。しかし、完全にそれを打つために?いいえ、それがHTTP DELETEの目的です。
削除フラグを設定するだけでなく、レコードを別のデータベース/テーブルに移動する場合はどうすればよいですか? – jaytufch
URIがどのように影響を受けるかによって異なります。 http://example.com/things/5へのGETがリソースを返すとしましょう。次に、それを "削除"するために同じURIにPOSTします。問題は、そのURIへの次のGETが何かを取得するかどうかです。それを別のテーブルに移動してhttp://example.com/things/5への次のGETが404または410を返した場合、それはHTTPを使用する間違った方法だと言います。おそらく、別のデータベースやテーブルに移動することはできますが、GETには削除されたという表現が返されます。 IMHOのみDELETEを実行すると、次のGETが404または410になるはずです。 –
いいえHTTPが意図されている方法ではRESTfulではありません。 DELETEまたはPUTをサポートしていないクライアントが、サポートするように設計されたリソースと対話できるようにする方法は、実行する操作を示すカスタムヘッダーを使用することです。次に、フレームワーク内のレイヤーにヘッダーを調べ、リソースコード内の正しいメソッドを呼び出します。私が最も広く使用しているアプローチは、X-HTTP-Method-Overrideというヘッダーを使用することです。クライアントがHTTPヘッダーを操作できない場合、同じアプローチ(同じ名前を使用するイベント)を要求パラメーターとともに使用できます。
- 1. TomcatはJersey(Jax-RS)を使用して@POSTリクエストを送信することを許可しません
- 2. AJAXを使用してPOSTリクエストを行うことができません
- 3. メソッドが許可されていないPUTまたは削除
- 4. JSON(P)とXMLの両方で応答できるRESTfulなWCFサービスで、まだSOAP Webサービスとして使用されていますか?
- 5. MySQLコミュニティServerを使用してA RESTfulなWebサービスとjQuery AJAX
- 6. 405 WCF Webサービスでメソッドが許可されていませんPostメソッド
- 7. 405の方法は、Webサービスに投稿しようとして許可されていないエラーが
- 8. は、私は、Webサービスへの新たなんだとPythonスクリプトを使用して、次のJSONベースのリクエストを送信しようとしていますPythonの
- 9. DeleteViewを使用してメソッドが許可されていない(POST)
- 10. AndroidアプリケーションをEclipseを使用してアップロードしてもまだ削除されているようです。
- 11. 私はこのコードを使用してAsyncHttpClientを使ってAndroidのでPOSTリクエストを作る取得しようとしていますAsyncHttpClient POSTリクエスト
- 12. Webサービスで入力値を取得できないのはなぜですか?私はここで@POST、JAXB を使用して(私は$ http.post、AngularJSを使用して、私のRESTfulなWebサービスに投稿された)私の入力値を取得しようとしています
- 13. Jquery - 許可されていないPOST要求を使用していますエラー
- 14. Pythonリクエストを使用してこのPOSTリクエストを行う方法
- 15. Android:アクティビティの許可をリクエストしてサービスを起動しても、サービスにアクセス許可が与えられていませんか?
- 16. 私はRESTfulなWebサービスを使用する方法を学んでいRESTfulなWebサービスを通じてJSONobjectに
- 17. RESTful Webサービス:カスタムXMLでHATEOASを実現しようとしています
- 18. PhoneGap/jQuery Mobileアプリで 'POST'クロスドメインのajaxリクエストが許可されていますか?
- 19. ASP.NET Webフォーム内でASP.NET Web APIを使用しているときに「メソッドが許可されていません」というエラーが表示される
- 20. WCFサービスのクライアント - 私は私が使用していますC#で簡単なWCFサービスのクライアントを持って
- 21. はまだトリガーを削除しても何度も呼び出されたサービスを持っています
- 22. storyboardからuiviewを削除してもまだ表示されています
- 23. sed-パターンが含まれていない行を削除してください
- 24. RESTfulなWCFサービスがPOST操作で「エンドポイントが見つかりません」というエラーを返します
- 25. 正しい許可があっても投稿を削除できません
- 26. OAuth2、POSTを使用しています...方法が許可されていませんか?
- 27. ASP.NET Web API HTTP削除405メソッドが許可されていません
- 28. RESTful WebサービスでYAMLをペイロードとして使用することはできますか?
- 29. MySQLでテーブル名として数字を使用することは許可されていますか?
- 30. スクリプトタグを削除してもまだ動作しています
これは公式の安静な標準ではありませんか? :http://www.ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm – jaytufch
私はHTTPを介して別のプロトコルをトンネリングしていると思いますが、これは悪い習慣です。 DELETEメソッドがある場合、それを使って削除する必要があります。 – You
いいえ..男の論文のようです。 – DrStrangeLove