2011-12-25 5 views
0

たとえば、データベースからデータを検索/挿入/取得/削除したいと思い、wcf RESTfulサービスで作業しています。 私は、テーブルからデータを取得する方法、テーブルを検索する方法、テーブルにデータを挿入する方法、テーブルからデータを削除する方法の1つを持っています。データベースとの通信のベストプラクティス - POSTまたはGET?

これらのメソッドはすべてPOSTまたはGETであることがわかります。

しかし、最もスマートなのは何ですか?ベストプラクティスは何ですか?

私の意見では、検索とgetメソッドはGETでなければなりません。挿入とDELETEメソッドはPOSTでなければなりません。

私は正しいですか?

+0

あなたは実際には「データベースとの通信」を意味しませんでした。あなたは「Webサーバーとの通信」を意味しました。 –

+0

@SergeiTulentsevいいえ、私はデータベースとの通信を意味しました。なぜなら、私の方法はすべてデータベースのテーブルを扱うためだからです。 –

+2

データベースがHTTPを使用していますか? –

答えて

3

あなたは正しいです。 GETについてのことは、クライアント(ブラウザ)が必要なときにいつでもリピートGETを自由に送ることができるので、それは冪等でなければならないということです。ただし、POSTはルールに従って1回のみ送信できます。

何かを変更するものはすべてPOSTです。厳密に言えば、GETの再送は削除を傷つけることはないが、HTTPプロトコルの精神を尊重すれば、一般的に削除がGETになる可能性もある。詳細は、HTTP RFC 2616を参照してください。

+0

投稿は1回だけ送信できることをどのように意味しますか?私はいつでも私の削除メソッドを呼び出すことができます、右? –

+0

ご迷惑をおかけして申し訳ありませんが、これは一度もありません。ブラウザはHTTP POSTメソッドを再送することはありません。応答が得られなかったり、通信障害を検出したりすると、GETメソッドがリセットされる可能性があります。 –

1

はい、これが規約です。

POSTは、データまたはシステムの状態を変更する操作に使用します。何も変更しないクエリにはGETを使用します。

Railsは、たとえばPUTとDELETEを使用してこれを強化していますが、これはほとんどのウェブサーバーではサポートされていません(回避策があります)。

参考文献:

+0

はい、私はPOSTとGETよりも多くの選択肢があることを知っていますが、私はその2つに限定しています:) –

+1

"PUTとDELETEはほとんどのウェブサーバーでサポートされていません" - * [要出典] * – josh3736

+0

@ josh3736:引用が追加されました –

1

Wiki has a good overview of the HTTP verbs and their use.

私があなただったら、私が使用したい:検索のための

GETと操作を取得する(彼らはデータを変更しないので、それはこれらの操作を複数回呼び出しても安全です)

削除操作のための挿入操作

DELETEため

POST

(IISにはDELETE動詞に問題はありません)

関連する問題