Недавно мы рассматривали взаимодействие клиента и сервера через HTTP-запросы и ответы на примере интернет-магазина с REST API. В продолжение этой темы для обучения начинающих системных и бизнес-аналитиков, сегодня разберем, как построить UML-диаграмму последовательности для этого взаимодействия, а также выясним, что такое веб-сервер, зачем он нужен и чем отличается от веб-приложения.
Веб-сервер, веб-приложение и БД
Согласно 3-хслойной архитектуре информационных систем, что мы разбирали здесь, данные хранятся в базе данных, а за выполнение манипуляций над нами отвечает слой бизнес-логики, реализованный в виде серверного веб-приложения. Однако, клиент (слой представления) обращается к веб-приложению не напрямую, а через веб-сервер — ПО, которое принимает HTTP-запросы от клиентов и выдает им HTTP-ответы, что мы подробно рассматривали в этой статье. Типичными клиентами веб-сервера являются браузеры или мобильные приложения. Помимо предоставления клиенту статичного контента в виде HTML-страницы с данными и мультимедиа (видео, изображения), веб-сервер также может выполнять функции маршрутизации и балансировки запросов. В отличие от серверного веб-приложения, которое отвечает за непосредственную бизнес-логику системы, веб-сервер потребляет мало ресурсов и может быть запущен в нескольких экземплярах. Хотя веб-серверы не поддерживают многопоточность, в отличие от серверных веб-приложений. Сегодня наиболее популярными веб-серверами считаются Apache HTTP, Nginx, Google Web Server, lighttpd и др.
Именно веб-сервер позволяет обращаться к серверному веб-приложению по протоколам HTTP и HTTPS, поддерживая HTTP-стандарты. В частности, веб-сервер дополняет HTTP-запросы от клиента метаданными о клиенте и сообщает это веб-приложению. А уже серверное веб-приложение непосредственно обращается к базе данных, направляя соответствующий SQL-запрос по предварительно настроенному подключению с помощью JDBC или ODBC-драйверов, о чем я рассказывала здесь.
Основы архитектуры и интеграции информационных систем
Код курса
OAIS
Ближайшая дата курса
20 января, 2025
Продолжительность
16 ак.часов
Стоимость обучения
36 000 руб.
В качестве примера распределенной системы возьмем интернет-магазин. Предположим, менеджер интернет-магазина хочет просмотреть ТОП-10 самых дорогих игрушечных машин белого цвета и добавить новую туда новую игрушку, если там нет аналогичной. В системе с REST API это будет выглядеть следующим образом: сперва менеджер отправляет с клиентского компьютера через веб-браузер HTTP-запрос GET к конечной точке по URL-адресу http://site-domain-name/products/toys?category=car&color=white&count=10&view=list&sort=pricedown. В этом запросе http://site-domain-name/products/toys — это URL-адрес ресурса, т.е. конечная точка (endpoint), который является пунктом доступа к системе извне. Параметры фильтрации и сортировки данных идут в заголовке запроса после вопросительного знака (?). В частности, выражение category=car задает, что нужны только машины, т.е. те товары, которые относятся к этой категории. Следующие параметры, разделенные знаком амперсанда (&), уточняют цвет (color=white), количество возвращаемых результатов (count =10), вариант их представления (view=list) и сортировку вывода (sort=pricedown).
Этот запрос отправляется на веб-сервер, который обогащает его метаданными и передает непосредственно в веб-приложение. Далее веб-приложение отправит базе данных SQL-запрос
SELECT * from products WHERE category='car' AND color='white' ORDER BY price DESC LIMIT 10
Выполнив этот SQL-запрос, база данные вернет веб-приложению результаты в виде хэш-таблицы со строками, отвечающим заданным условиям. Веб-приложение упакует эти результаты в виде ответного сообщения, например, в формате JSON, и дополнит его статусом выполнения посланного HTTP-запроса со статусом 200 (OK), что означает успешное выполнение запроса: данные в системе есть и у пользователя есть право их чтения. Справедливости ради стоит отметить, что REST, в отличие от SOAP, может возвращать данные не только в JSON, но также и в HTML, XML и других форматах. Впрочем, на практике чаще всего в REST используется человеко-читаемый текстовый формат JSON (JavaScript Object Notation) на основе JavaScript. Подробнее о сходствах и различиях SOAP и REST, а также их сравнении с другими стилями межсистемной интеграции по API я писала здесь.
Если у клиента отсутствуют права на просмотр данных о товарах, в ответном сообщении будет код 401 (Unauthorized), что означает статус ошибки и указывает, что запрос не был выполнен из-за отсутствия у клиента действующих учётных данных для манипуляций с целевым ресурсом. Подробнее про процедуры аутентификации и авторизации в веб-приложениях читайте в моей новой статье. Получив ответное сообщение от веб-приложения, веб-сервер обогащает его метаданными и отправляет клиенту. Таким образом, можно сказать, что комбинация веб-сервера и серверного веб-приложения и реализует REST API распределенной системы. А взаимодействие между ее слоями с клиентом можно представить в виде следующей UML-диаграммы последовательности.
Эта UML-диаграмма последовательности была создана в веб-движке PlantUML (https://www.plantuml.com/) через следующее определение:
@startuml actor Менеджер participant Web_Server participant Web_App participant DataBase autonumber Менеджер -> Web_Server : GET /products/toys?category=car&color=white&count=10&view=list&sort=pricedown activate Web_Server Web_Server --> Web_App : HTTP-запрос+ метаданные о запросе Web_App --> DataBase : SELECT * from products WHERE category='car' AND color='white' ORDER BY price DESC LIMIT 10 activate DataBase DataBase --> Web_App : результат выполнения SQL-запроса deactivate DataBase Web_App --> Web_Server : HTTP-ответ с данными о товарах Web_Server --> Менеджер : дополненный HTTP-ответ deactivate Web_Server @enduml
DDD, ООП и UML для аналитика
Код курса
BUML
Ближайшая дата курса
9 декабря, 2024
Продолжительность
16 ак.часов
Стоимость обучения
36 000 руб.
А пока предлагаем вам проверить, как вы усвоили материалы по REST API в открытом интерактивном тесте.
Узнайте больше про основы архитектуры и интеграции информационных систем, а также использование UML на курсах Школы прикладного бизнес-анализа в нашем лицензированном учебном центре обучения и повышения квалификации системных и бизнес-аналитиков в Москве:
Источники