Добавил:
rushevamar@mail.ru Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
РИС шпоры для печати.docx
Скачиваний:
29
Добавлен:
31.05.2022
Размер:
1.01 Mб
Скачать

52. ResTful Web-сервисы. Архитектура и особенности разработки. Преимущества и недостатки стиля rest. Яна

REST (Representational state transfer) – это стиль архитектуры программного обеспечения для распределенных систем, таких как World Wide Web, который, как правило, используется для построения веб-служб.

Каждая единица информации однозначно определяется URL – это значит, что URL по сути является первичным ключом для единицы данных. Т.е. например третья книга с книжной полки будет иметь вид /book/3, а 35 страница в этой книге — /book/3/page/35.

Как происходит управление информацией сервиса – это целиком и полностью основывается на протоколе передачи данных. Наиболее распространенный протокол конечно же HTTP. Так вот, для HTTP действие над данными задается с помощью методов: GET (получить), PUT (добавить, заменить), POST (добавить, изменить, удалить), DELETE (удалить). Таким образом, действия CRUD (Create-Read-Updtae-Delete) могут выполняться как со всеми 4-мя методами, так и только с помощью GET и POST.

Принципы REST API определены в диссертации его создателя Роя Филдинга. Основные из них:

  • единый интерфейс;

  • разграничение клиента и сервера;

  • нет сохранения состояния;

  • кэширование всегда разрешено;

  • многоуровневая система;

  • код предоставляется по запросу.

Лучше всего архитектура REST API видна в запросе веб-службы. Из чего она состоит:

  • URL-адрес конечной точки;

  • метод HTTP;

  • заголовки HTTP;

  • данные тела (body).

Преимущества REST API:

  • REST API легко понять и освоить, благодаря своей простоте, известному API.

  • REST API позволяет организовывать сложные приложения и упрощает использование ресурсов.

  • С высокой нагрузкой можно справиться с помощью HTTP-прокси-сервера и кеша.

  • Это упрощает работу новых клиентов с другими приложениями, независимо от того, разработано ли оно специально для этой цели или нет.

  • Используйте стандартные вызовы HTTP-процедур для получения данных и запросов.

  • REST API зависит от кодов, может использовать его для синхронизации данных с веб-сайтом без каких-либо осложнений.

  • Пользователи могут получить доступ к тем же стандартным объектам и модели данных по сравнению с веб-службами на основе SOAP.

  • Обеспечивает гибкость форматов за счет сериализации данных в формате XML или JSON.

  • Обеспечивает стандартную защиту с использованием протоколов OAuth для проверки ваших запросов REST.

Недостатки или проблемы в REST:

  • Отсутствие состояния: большинству веб-приложений требуются механизмы с отслеживанием состояния. Предположим, вы покупаете веб-сайт, на котором есть механизм корзины покупок. Перед совершением фактической покупки необходимо знать количество товаров в корзине. Это бремя поддержания состояния лежит на клиенте, что делает клиентское приложение тяжелым и трудным в обслуживании.

Последнее из безопасности: REST не навязывает безопасность, такую ​​​​как SOAP. Вот почему REST подходит для общедоступных URL-адресов, но не подходит для передачи конфиденциальных данных между клиентом и сервером.

53.AJAX (Asynchronous JavaScript and XML) - асинхронный код JavaScript и XML, что это. Основные объекты, принципы и механизмы для разработки приложений AJAX. Структура и исполнение основных запросов. Пример. САША

AJAX – это аббревиатура от «Asynchronous JavaScript and XML», которая дословно переводится как «асинхронный JavaScript и XML».

Что означают эти слова?

  • асинхронный – действие выполняется в фоне (не в основном потоке), другими словами, таким образом, что оно не мешает пользователю взаимодействовать со страницей;

  • JavaScript – язык, на котором всё это делается (т.е. создание и настройка запроса, отправка его на сервер, получение ответа и его разбор, обновление страницы);

  • XML – формат для хранения и передачи данных, в настоящее время вместо него чаще используется JSON, но кроме них можно использовать и другие форматы.

Что такое AJAX? AJAX – это термин, который описывает как можно используя существующие технологии получать данные с сервера в фоновом режиме и использовать их для обновления страницы (без перезагрузки). Основная цель AJAX – это сделать сайты и веб-приложения более удобными, быстрыми и отзывчивыми.

Основные преимущества использования AJAX:

  • снижение трафика (из-за уменьшения объёма передаваемых данных между клиентом и сервером);

  • уменьшение нагрузки на сервер (не нужно генерировать всю страницу, а только ту часть, которую нужно обновить);

  • увеличение быстродействия и отзывчивости (нет необходимости в полной перезагрузки страницы, достаточно обновить содержимое только отдельных блоков);

  • повышение интерактивности (с помощью AJAX можно сразу отображать результаты и сделать ресурс более удобным для пользования).

Взаимодействие с сервером через асинхронные запросы осуществляется посредством XHR или метода fetch().

Для того, чтобы осуществлять обмен данными, на странице должен быть создан объект XMLHttpRequest, который является своеобразным посредником между Браузером пользователя и сервером. С помощью XMLHttpRequest можно отправить запрос на сервер, а также получить ответ в виде различного рода данных.

Обмениваться данными с сервером можно двумя способами. Первый способ — это GET-запрос. В этом запросе вы обращаетесь к документу на сервере, передавая ему аргументы через сам URL. При этом на стороне клиента будет логично использовать функция Javascript`а escape для того, чтобы некоторые данные не прервали запрос.

Алгоритм запроса к серверу выглядит так:

  • Проверка существования XMLHttpRequest.

  • Инициализация соединения с сервером.

  • Посылка запрса серверу.

  • Обработка полученных данных.

Для создания запроса к серверу мы создадим небольшую функцию, которая будет по функциональности объединять в себе функции для GET и POST запросов.

/*

Функция посылки запроса к файлу на сервере

r_method - тип запроса: GET или POST

r_path - путь к файлу

r_args - аргументы вида a=1&b=2&c=3...

r_handler - функция-обработчик ответа от сервера

*/

function SendRequest(r_method, r_path, r_args, r_handler)

{

//Создаём запрос

var Request = CreateRequest();

//Проверяем существование запроса еще раз

if (!Request)

{

return;

}

//Назначаем пользовательский обработчик

Request.onreadystatechange = function()

{

//Если обмен данными завершен

if (Request.readyState == 4)

{

//Передаем управление обработчику пользователя

r_handler(Request);

}

}

//Проверяем, если требуется сделать GET-запрос

if (r_method.toLowerCase() == "get" && r_args.length > 0)

r_path += "?" + r_args;

//Инициализируем соединение

Request.open(r_method, r_path, true);

if (r_method.toLowerCase() == "post")

{

//Если это POST-запрос

//Устанавливаем заголовок

Request.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=utf-8");

//Посылаем запрос

Request.send(r_args);

}

else

{

//Если это GET-запрос

//Посылаем нуль-запрос

Request.send(null);

}

}