В чем разница между AJAX, RESTful / Rest, JSON и JSONP? - PullRequest
39 голосов
/ 19 августа 2011

Я просто запутался с этими условиями.Кто-нибудь может предоставить / объяснить мне кратко с примером?

Ответы [ 3 ]

47 голосов
/ 19 августа 2011
  • Ajax - «Асинхронный Javascript и XML». Ajax свободно определяет набор технологий, которые помогут сделать веб-приложения более насыщенными. Обновление данных и обновление экрана выполняется асинхронно с использованием javascript и xml (или json или просто обычной записи http).

  • JSON - «Обозначение объекта Javascript». JSON похож на xml в том смысле, что его можно использовать для описания объектов, но он более компактен и имеет то преимущество, что является настоящим javascript. Объект, выраженный в JSON, может быть преобразован в реальный объект для манипулирования в коде JavaScript.

  • По умолчанию запросы Ajax должны происходить в том же домене страницы, откуда происходит запрос. JSONP - «JSON with padding» - был создан, чтобы позволить вам запрашивать ресурсы JSON из другого домена. ( CORS - более новая и лучшая альтернатива JSONP.)

  • REST - «Передача представительского состояния». Приложения, использующие принципы REST, имеют структуру URL и шаблон запроса / ответа, которые вращаются вокруг использования ресурсов. В чистой модели HTTP-глаголы Get, Post, Put и Delete используются для извлечения, создания, обновления и удаления ресурсов соответственно. Положения и удаления часто не используются, оставляя «Получить» и «Опубликовать на карте» для выбора (GET) и создания, обновления и удаления (POST)

17 голосов
/ 19 августа 2011

Ajax, или, точнее, AJAX, означает асинхронный Javascript и Xml. Технически это относится к любому асинхронному запросу, сделанному браузером (все, что использует XmlHttpRequest) от имени некоторого сценария, работающего на текущей странице, независимо от того, какой тип содержимого возвращается. Он также может быть использован для описания определенного шаблона построения страницы / сайта, где большая часть / весь контент динамически выбирается / обновляется на странице. Когда используется для описания формата данных, «ajax» обычно означает «xml».

JSON - это формат кодирования данных. Само название является аббревиатурой от «JavaScript Object Notation». Данные в формате JSON выглядят так:

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

Данные JSON могут быть получены с помощью AJAX-запроса, хотя в других контекстах он довольно часто используется как легкий, расширяемый и простой в анализе формат обмена данными.

JSONP - это просто данные в формате JSON, обернутые в функцию обратного вызова. «P» означает «с отступом», что глупо, если только вы не думаете о вызовах функций как «заполнение». В любом случае данные JSONP будут выглядеть так:

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

Таким образом, JSONP на самом деле является просто фрагментом JavaScript, и в отличие от JSON не используется вне контекста JavaScript, браузеров (или других клиентов с поддержкой JavaScript) и запросов AJAX. Причина использования JSONP заключается в том, что он допускает подрыв политики того же происхождения . Сценарий, полученный из сайта X, не может сделать прямой запрос к сайту Y, если сайт Y находится в другом домене, чем сайт X. Но если сервер сайта Y может отправлять ответы в формате JSONP, то сценарий с сайта X может добавить новый тег <script> для документа, который ссылается на URL-адрес на сайте Y, и при загрузке ответа с сайта Y он вызовет некоторую функцию обратного вызова, определенную сценарием X в документе, что даст сценарию X доступ к загруженным данным динамически с сайта Y.

Обратите внимание, что данные JSONP (как правило) не запрашиваются с использованием XmlHttpRequest. Это может быть сделано таким образом, при условии соблюдения стандартных предостережений политики того же происхождения, но тогда вы потеряете междоменную магию, которая делает JSONP полезным в первую очередь.

REST - это просто формальная спецификация / описание того, как HTTP на самом деле работает / предназначен для использования. Если вы понимаете концепцию URL-адреса, используемого для запроса соответствующего ресурса с сервера, и разницу между Get и Post, то вы действительно знаете все, что вам нужно о REST.

4 голосов
/ 19 августа 2011

Ajax расшифровывается как асинхронный JavaScript и Xml / XhttpRequet (X зависит и изменяется, так как в основном json используется сегодня.

Это способ выполнить запрос со страницы с помощью javascript на сервер и получить некоторый ответ. Этим ответом может быть что угодно, json, xml, текст, html и т. Д. *

Это делает страницы выглядящими очень отзывчивыми, без необходимости перезагружать всю страницу для выполнения действий над ней. Например, разместив этот ответ на ваши вопросы. : -)

Json - это формат данных, обозначающий нотацию объекта JavaScrip. Это более легкий формат сериализации, чем XML, и имеет преимущество перед JavaScript.

JsonP - это следующий и логичный шаг к использованию Ajax с Json.

Сервер ответит JSONP, оборачивая объект Json в функцию обратного вызова. Имя функции передается клиентом на сервер, обычно в качестве параметра в строке запроса. P обозначает заполнение, поскольку сервер окружает объект json именем функции и объектом в качестве аргумента.

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

См. http://en.wikipedia.org/wiki/JSONP для более подробного объяснения.

...