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.