Лучшая практика обработки запросов AJAX с веб-сайта к поставщику API - PullRequest
0 голосов
/ 28 января 2011

Итак, я реализовал API-провайдер для доступа как к веб-приложениям, так и к мобильным приложениям.

Скорее всего, это не будет крупномасштабный проект, но я хочу максимально увеличить свой учебный опыт и узнать, где я могу.

В любом случае, насколько я понимаю, кажется, что лучше разместить службу провайдера API и реальный веб-сайт на отдельных доменах, чтобы упростить масштабирование. Например, в твиттере есть сайты twitter.com и api.twitter.com.

Одной из непосредственных проблем будет проблема междоменной связи с AJAX. Из того, что я понял, есть 2 способа реализации междоменного AJAX

  1. JSONP: Я слышал об этом, но не знаю много, кроме имени
  2. Proxy Server: мой веб-сайт построен на основе ASP.NET MVC, и я подумывал о создании контроллера APIProxy для обработки всех междоменных запросов API.

Таким образом, я совершал бы вызов AJAX через $ .ajax (настройки), а затем передавал URL-адрес веб-сайта, соответствующий контроллеру APIProxy. Затем контроллер APIProxy будет выполнять соответствующие вызовы POST-сервера и обрабатывать ответы JSON и возвращать ответ обратно функциям обратного вызова AJAX.

Я слышал о flXHR о том, что я не хочу использовать Flash, потому что такие устройства, как iPad или многие другие мобильные браузеры, не поддерживают Flash.

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

1 Ответ

2 голосов
/ 28 января 2011

Когда вы запрашиваете некоторый JSON, он возвращает объект или массив. Теги скрипта не подчиняются правилу того же домена. Так что вместо того, чтобы делать AJAX-вызов, вы, по сути, делаете это:

<script src="Http://api.example.com?param1=something&etc"></script>

Это загрузит JSON и будет выполняться как JavaScript.

... Но простой объект или массив, «выполняющийся» сам по себе, не очень полезен. Поэтому, когда вы запрашиваете JSON, вы также включаете имя функции обратного вызова. Если провайдер видит, что был предоставлен обратный вызов, а не просто возвращает JSON, он фактически возвращает JavaScript: JSON передается вашей функции в качестве аргумента.

Затем, когда скрипт загружается, вызывается ваша функция (которую вы уже определили), и ей предоставляется JSON для работы.

Это JSONP.

Библиография

  1. Ньютон, Аарон. " Request.JSONP ." Clientcide . 7 декабря 2009 г. Интернет. 28 января 2011 года.
...