...

UML-диаграмма последовательности для REST API: практический пример

REST примеры курсы обучение, интеграция информационных систем REST простыми словами для начинающих примеры курсы обучение, интеграция информационных систем простыми словами для начинающих примеры курсы обучение, основы интеграции информационных систем для бизнес-аналитика, интеграция информационных систем основы введение, краткий ликбез по интеграции информационных систем, обучение системных и бизнес-аналитиков, курсы системного и бизнес-анализа, Школа прикладного бизнес-анализа Учебный Центр Коммерсант

Недавно мы рассматривали взаимодействие клиента и сервера через HTTP-запросы и ответы на примере интернет-магазина с REST API. В продолжение этой темы для обучения начинающих системных и бизнес-аналитиков, сегодня разберем, как построить UML-диаграмму последовательности для этого взаимодействия, а также выясним, что такое веб-сервер, зачем он нужен и чем отличается от веб-приложения.

Веб-сервер, веб-приложение и БД

Согласно 3-хслойной архитектуре информационных систем, что мы разбирали здесь, данные хранятся в базе данных, а за выполнение манипуляций над нами отвечает слой бизнес-логики, реализованный в виде серверного веб-приложения. Однако, клиент (слой представления) обращается к веб-приложению не напрямую, а через веб-сервер — ПО, которое принимает HTTP-запросы от клиентов и выдает им HTTP-ответы, что мы подробно рассматривали в этой статье. Типичными клиентами веб-сервера являются браузеры или мобильные приложения. Помимо предоставления клиенту статичного контента в виде HTML-страницы с данными и мультимедиа (видео, изображения), веб-сервер также может выполнять функции маршрутизации и балансировки запросов. В отличие от серверного веб-приложения, которое отвечает за непосредственную бизнес-логику системы, веб-сервер потребляет мало ресурсов и может быть запущен в нескольких экземплярах. Хотя веб-серверы не поддерживают многопоточность, в отличие от серверных веб-приложений. Сегодня наиболее популярными веб-серверами считаются Apache HTTP, Nginx, Google Web Server, lighttpd и др.

Именно веб-сервер позволяет обращаться к серверному веб-приложению по протоколам HTTP и HTTPS, поддерживая HTTP-стандарты. В частности, веб-сервер дополняет HTTP-запросы от клиента метаданными о клиенте и сообщает это веб-приложению. А уже серверное веб-приложение непосредственно обращается к базе данных, направляя соответствующий SQL-запрос по предварительно настроенному подключению с помощью JDBC или ODBC-драйверов, о чем я рассказывала здесь.

Основы архитектуры и интеграции информационных систем

Код курса
OAIS
Ближайшая дата курса
5 ноября, 2024
Продолжительность
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 диаграмма последовательности REST API
UML диаграмма последовательности REST API

Эта 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 в открытом интерактивном тесте.

API межсистемной интеграции: тест для аналитика

Узнайте больше про основы архитектуры и интеграции информационных систем, а также использование UML на курсах Школы прикладного бизнес-анализа в нашем лицензированном учебном центре обучения и повышения квалификации системных и бизнес-аналитиков в Москве:

 

Я даю свое согласие на обработку персональных данных и соглашаюсь с политикой конфиденциальности.

Источники

  1. https://developer.mozilla.org/ru/docs/Web/HTTP/Status
  2. https://itelon.ru/blog/server-prilozheniy-i-veb-server/

Добавить комментарий