81

AjaxリクエストのGETPOSTの違いは何ですか?

GETを使用すると、パラメータがURLで送信されることを除いて、これら2つの違いはわかりません。すべてのリクエストはバックグラウンドで行われ、ユーザーは何も見つからないため、実際には違いはありません。違い。

編集:PUTおよびDELETEメソッドは何に使用されますか?

4

10 に答える 10

138

GETは、サーバーからデータを取得するために設計されています。POST(およびあまり知られていない友人のPUTとDELETE)は、サーバー上のデータを変更するために設計されています。

GETリクエストによって、アプリケーションからデータが削除されることはありません。GETでクリックしてデータを削除できるリンクがある場合は、サイトをスパイダリングしているGoogleがすべての「削除」リンクをクリックする可能性があります。

正規の答えはここにあります。これは、HTML2.0仕様を引用しています。

フォームの処理がべき等である場合(つまり、世界の状態に永続的な観察可能な影響がない場合)、フォームメソッドはGETである必要があります。多くのデータベース検索には目に見える副作用がなく、クエリフォームの理想的なアプリケーションになります。

フォームの処理に関連するサービスに副作用(データベースの変更やサービスのサブスクリプションなど)がある場合、メソッドはPOSTである必要があります。

AJAX呼び出しでは、サーバーがサポートする方法を使用する必要があります。データを変更する操作がPOST/PUT / DELETEによって呼び出されるように、常にサーバーを設計する必要があります。他のコメントにはRESTへのリンクがあり、通常はC / R / U / Dを「POSTまたはPUT」(作成)/ GET(読み取り)/ PUT(更新)/ DELETE(削除)にマップします。

于 2009-04-03T19:31:13.367 に答える
28

大量のデータまたは機密データをHTTPS経由で送信する場合は、POSTを使用することをお勧めします。単純なパラメータの場合は、GETを使用します。

GETリクエストには、送信できるデータの量に制限があります。正確な数を忘れてしまいましたが、実質的なものを送信すると問題が発生する可能性があります。

基本的に、GETとPOSTの違いは、GETリクエストでは、パラメータがURLで渡されるのに対し、POSTの場合と同様に、パラメータはメッセージ本文に含まれることです。

于 2009-04-03T19:30:56.313 に答える
19

AJAXかどうかは関係ありません。それはあなたが取っている行動についてです。RESTの原則に従うことをお勧めします。更新、削除などのさらなる規定があります...

于 2009-04-03T19:33:47.570 に答える
3

多くの Web サーバーは、URL の一部として渡すことができるデータの長さを制限しているため、GET 要求は、デバッグが困難な奇妙な方法で壊れる可能性があります。

また、ほとんどのサーバー ソフトウェアは URL をアクセス ログに記録するため、機密情報 (パスワードなど) を GET 要求で渡すと、これはおそらくプレーンテキストでディスクに書き込まれます。

REST の観点からは、GET 要求に副作用があってはなりません。つまり、データを変更してはなりません。したがって、ID でリソースを取得するだけであれば、これは理にかなっていますが、リソースに変更をコミットする場合は、http 動詞に PUT、POST、または UPDATE を使用する必要があります。

于 2009-04-03T19:33:54.340 に答える
1

私については、POST の方が好きです。送信された値がデータに限定されていることを知っているイベントへの取得を予約します。たとえば、ID を持つアイテムを取得するための「コントロール」があります。例、「getitem?id=123」、「deleteImtem?id=123」、... 他のケースでは、ユーザーが入力できるフォームがある場合は、POST を好みます。

Ryan Smith が言ったように、POST を使用して大量のデータを送信する方が良いです。他の言語/特殊文字で使用する場合の心配は少なくなります (一般に、すべての主要な JavaScript フレームワークはそれを処理するのに問題はありませんが、 POSTを使用する心配は少ないと思います)。

REST の観点では、私の意見では、これを新しいプロジェクトで使用できます (プロジェクト全体との一貫性を保つため)。

最後に、ネットワークで使用されるいくつかのプログラム (URL ロガー (つまり、従業員が自動化されていないサイトで時間を失ったかどうかを確認するため、...) プロキシ、...) またはその他の種類のツールがクエリを傍受できる可能性があります。 . GET で送信したパラメーターを別の Web ページのように見なして、レポートに表示するものもあります。しかし、この状況では、あなたの問題ではなく、プロジェクトから別のプロジェクトへの変更である可能性があります! ;)

于 2009-04-03T20:03:05.253 に答える
0

Ajax、HTML 、またはを使用しGETているかどうかの違いは同じです。関連する定義は次のとおりです。POSTformcurl

于 2009-04-03T19:40:59.253 に答える
-2

URL で混乱する可能性のある文字 (スペースなど) を含む引数を渡す場合は、POST を使用します。それ以外の場合は、GET を使用できます。

一般に、いくつかの小さな引数を渡すだけの場合は、GET を使用します。ただし、ブログ エントリやテキストなど、ユーザーが送信した情報を渡すには、POST を使用することをお勧めします。

セグメント ベースの URL に完全に依存する特定のフレームワークもあります (たとえば、これらのフレームワークはセキュリティのために GET 変数を設定解除します。そのようsite.com/products/133site.com/products.php?id=333場合は、常に POST を使用します。

于 2009-04-03T19:34:01.300 に答える