web-dev-qa-db-ja.com

AJAX、RESTful / Rest、JSON、およびJSONPの違いは何ですか?

私はこれらの用語と混同しています。誰か簡単な例を提供/説明してもらえますか?

39
user901620
  • Ajax -「非同期JavascriptとXML」。 Ajaxは、Webアプリケーションのユーザーエクスペリエンスをより豊かにするための一連のテクノロジーを大まかに定義しています。画面のデータの更新と更新は、javascriptとxml(またはjsonまたは通常のhttp投稿)を使用して非同期的に行われます。

  • [〜#〜] json [〜#〜] -「Javascript Object Notation」。 JSONは、オブジェクトの記述に使用できるという点でxmlに似ていますが、よりコンパクトで、実際のjavascriptであるという利点があります。 JSONで表現されたオブジェクトは、JavaScriptコードで操作される実際のオブジェクトに変換できます。

  • デフォルトでは、Ajaxリクエストは、リクエストが発生したページの同じドメインで発生する必要があります。 [〜#〜] jsonp [〜#〜] -「JSON with padding」-リクエストできるように作成されました別のドメインからのJSONリソース。 ( [〜#〜] cors [〜#〜] はJSONPのより優れた代替手段です。)

  • [〜#〜] rest [〜#〜] -「代表的な状態転送」。 REST原則を使用するアプリケーションには、リソースの使用を中心にしたUrl構造と要求/応答パターンがあります。純粋なモデルでは、HTTP動詞Get、Post、Put、Deleteを使用して取得しますリソースを作成、更新、削除します。PutとDeleteは多くの場合使用されず、GetとPostをマップに残して選択(GET)および作成、更新、削除(POST)します。

47
Nathan Ratcliff

Ajax、またはより適切にはAJAXは、Asynchronous Javascript And Xmlの略です。技術的には、返されるコンテンツタイプに関係なく、現在のページで実行されているスクリプトに代わって、ブラウザー(XmlHttpRequestを使用するもの)によって行われた非同期要求を指します。また、コンテンツのほとんど/すべてがページ上で動的に取得/更新されるページ/サイトを構築する特定のパターンを記述するためにも使用できます。データ形式の記述に使用される場合、「ajax」は通常「xml」を意味します。

JSONはデータエンコード形式です。名前自体は「JavaScript Object Notation」の頭字語です。 JSON形式のデータは次のようになります。

{"key": "value1", "key2": {"number": 1, "array": [0, 1, 2]}}

JSONデータは、AJAXリクエストによって取得できますが、他のコンテキストでは、軽量で拡張可能で解析しやすいデータ交換形式として非常に一般的に使用されます。

JSONPは、コールバック関数にラップされたJSON形式のデータです。 「P」は「with Padding」を表します。これは、関数呼び出しを「padding」と考えたくない限り、一種の愚かです。いずれにしても、JSONPデータは次のようになります。

someFunction({"key": "value1", "key2": {"number": 1, "array": [0, 1, 2]}});

そのため、JSONPは実際には単なるJavaScriptスニペットであり、JSONとは異なり、JSONはJavaScript、ブラウザー(または他のJavaScript対応クライアント)、およびAJAXリクエストのコンテキスト以外では使用されません。 JSONPを使用すると、 same-Origin policy を破壊できます。サイトYがサイトXとは異なるドメインにある場合、サイトXからソースされたスクリプトはサイトYに直接リクエストできません。 。しかし、サイトYのサーバーがJSONP形式の応答を送信できる場合、サイトXのスクリプトは新しい<script>サイトYのURLを参照するドキュメントへのタグ。サイトYからの応答が読み込まれると、スクリプトXがドキュメントで定義したコールバック関数を呼び出し、スクリプトXから動的に読み込まれたデータにアクセスできるようにしますサイトY.

JSONPデータは(通常)XmlHttpRequestを使用して要求されないことに注意してください。同じ方法のポリシーの標準的な注意事項に従って、この方法で行うことができますが、そもそもJSONPが便利になるクロスドメインマジックが失われます。

RESTは、HTTPが実際にどのように機能するか、または使用することを意図しているのかという、正式な仕様/説明です。サーバーから対応するリソースを要求するために使用されるURLの概念とGetPostの違いを理解していれば、RESTに必要なすべてを本当に理解できます。

17
aroth

AjaxはAsynchronous JavaScriptとXml/XhttpRequetの略です(今日はほとんどjsonが使用されているため、Xは依存し、変更されています。

これは、サーバーへのJavaScriptを使用してページからリクエストを実行し、何らかの応答を受信する方法です。この応答は、json、xml、text、htmlなど、何でもかまいません。

これにより、ページ全体をリロードしてアクションを実行することなく、ページの応答性が向上します。たとえば、この回答を質問に投稿します。 :-)

Jsonは、JavaScrip Object Notationを表すデータ形式です。 xmlよりも軽いシリアル化形式であり、JavaScriptであるという利点があります。

JsonPは、JsonでAjaxを使用するための次の論理的なステップです。

サーバーは、JSONオブジェクトをコールバック関数でラップするJSONPで応答します。関数の名前は、通常はクエリ文字列のパラメーターとして、クライアントからサーバーに渡されます。サーバーは関数の名前とオブジェクトを引数としてjsonオブジェクトを囲むため、Pはパディングを表します。

callback({"name":"my name"});

詳細については、 http://en.wikipedia.org/wiki/JSONP を参照してください。

4
theprogrammer