2017-09-12 10 views
2

私は、RESTはHTTPを使用しなければならない方法です。RESTは、HTTPを使用する方法についての規則のセットだけで休憩でPOSTを使用して削除/更新しますか?

受け入れ答えは

を言うこと (受け入れ答えWhat is the difference between HTTP and REST?から)理解

今日は、HTTPプロトコルの方法のほんの少ししか使用しません。つまり、 GETとPOSTです。 RESTの方法は、すべてのプロトコルの メソッドを使用することです。

例えば、RESTはHTTPを使用すると、 誤用などのGETやPOSTのクエリーだろう、一方、URIの後ろに(そのファイル、状態、など こと)文書を消去するDELETEの使用を指示します。.. .product /?delete_id = 22

私は休憩中にリソースを更新/削除する代わりに、DELETE/PUTのPOSTメソッドを使い続けると私の質問は欠点/欠点は、(技術的または設計)は何かありますか? RESTで

答えて

0

一般的に、我々はいくつかのことやPOSTリクエストを削除するためにいくつかのことを追加するためのPOST使用は、既存のデータとDELETEにいくつかのことを編集するためのPUT使用が使用されることを知っているがnot Idempotentですが、DELETE要求がIdempotentです。 better understandingの場合、特定の方法がどのような目的で使用されていて、これらの方法を使用するとUI developerBackend developerの間のブリッジは最小化されないため、上記の定義は私の観点からは使用しています。

DELETE/PUTの代わりにPOSTメソッドを使用する場合は、 は影響がありませんが、これは良いコーディング標準ではありません。

4

私の質問は、欠点/問題点(技術やデザイン)は何かということです 私は残りのリソースを更新/ 削除する代わりに、DELETE/PUTのPOSTメソッドを使用し続けた場合は?

POST要求がIdempotentはありませんが、DELETE要求がIdempotentです。

冪等HTTPメソッドは、異なる結果

Idempotencyfault-tolerant APIを構築する上で重要であるせずに何度も呼び出すことができるHTTPメソッドです。

クライアントがPOSTを介してリソースを更新したいとします。 POSTは冪等ではないので、複数回呼び出すと間違った更新が行われる可能性があります。 POST要求をサーバーに送信したが、タイムアウトが発生した場合はどうなりますか。リソースは実際に更新されていますか?サーバーへの要求またはクライアントへの応答の送信中にタイムアウトが発生しましたか?私たちは安全に再試行できますか、またはリソースで何が起きたのかを最初に把握する必要がありますか? idempotentメソッドを使用することで、この質問に答える必要はありませんが、実際にサーバーから応答が返されるまで、安全にリクエストを再送信できます。

したがって、削除のためにPOSTを使用すると、結果が発生します。

+2

さらに、等号 – VedX

0

純粋に技術的な観点から、私は実際の欠点を認識していません。他の人は冪等しさを言いましたが、それは単にDELETEを使うだけではありません。あなたはまだそれを実装しなければなりません。

設計上の考慮事項を私たちに残し:

  • あなたのクライアント(またはむしろあなたのAPIに対してプログラミングプログラマは)合理的に物事を追加するものとPOSTメソッドを削除するDELETEメソッドを期待するかもしれません。この条約に従わないと、混乱することになります。
  • 物事を削除したり追加したりするためにPOSTを使用する場合、実際に何をするかを示す別の方法を考案する必要があります。確かにこれはあまり難しいことではありませんが、正当な理由がないとAPIが複雑になります。
  • これらの理由から、既に文書化されているRESTfulな原則に従わないため、より多くの優れたドキュメントが必要になります。
関連する問題