СЕРВЕРНАЯ ЧАСТЬ ИНФОРМАЦИОННОЙ СИСТЕМЫ ДЛЯ ПОКУПКИ АВИАБИЛЕТОВ C ИСПОЛЬЗОВАНИЕМ JAVA

СЕРВЕРНАЯ ЧАСТЬ ИНФОРМАЦИОННОЙ СИСТЕМЫ ДЛЯ ПОКУПКИ АВИАБИЛЕТОВ C ИСПОЛЬЗОВАНИЕМ JAVA

Авторы публикации

Рубрика

IT-Технологии

Просмотры

101

Журнал

Журнал «Научный лидер» выпуск # 2 (152), Январь ‘24

Дата публикации 22.01.2024

Поделиться

В статье рассмотрен процесс разработки серверной части информационной системы для покупки авиабилетов с помощью языка программирования Java и фреймворка Spring. Описан процесс разработки, внедрения аутентификации пользователя. Отдельное внимание уделено хранению данных.

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

Spring — это один из самых популярных фреймворков для разработки веб-приложений на языке Java. Он предоставляет множество инструментов и библиотек, которые позволяют создавать масштабируемые и безопасные приложения. Создание серверной части на Spring позволяет использовать множество функций, таких как интеграция с базами данных, управление сеансами, авторизация и аутентификация пользователей, обработка ошибок и многое другое.

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

Обеспечение безопасной авторизации пользователей в API играет решающую роль в защите данных и предотвращении несанкционированного доступа. Правильная реализация этой функциональности обеспечивает сохранность конфиденциальной информации и поддерживает доверие пользователей к системе.

Выбор Spring Security и JWT (JSON Web Token) в этом контексте является стратегическим. Spring Security предоставляет мощные инструменты для управления аутентификацией и авторизацией, позволяя создать гибкую и надежную систему защиты. JWT, в свою очередь, обеспечивает безопасный обмен данными между сервером и клиентом, предоставляя механизм токенов, которые могут быть проверены и декодированы для подтверждения авторизации пользователя.

Использование Spring Security с JWT позволяет не только защитить API от несанкционированного доступа, но и создать масштабируемую и эффективную систему, которая удовлетворяет современные стандарты безопасности в веб-разработке.

Рассмотрим схему авторизации (рисунок 1).

Рисунок 1. Диаграмма аутентификации

Пользователь отправляет запрос на сервер. Далее вызывается фильтр аутентификации, который проверяет наличие JWT-токена и его выполняет поиск пользователя в базе данных при помощи сервиса проверки токена. В случае провала возвращается ответ с кодом 403 Unauthorized.

Если же токен корректный и активный, то сервис продолжает выполнение, обновляет контекст безопасности и в итоге возвращает пользователю данные с кодом ответа 200 Ok.

Также есть некоторые конечные точки, которые доступны без авторизации. Например, ссылки для регистрации и авторизации, а также секция с документацией OpenAPI и Swagger (рисунок 6).

Для хранения информации был сделан выбор в пользу MySQL — это система управления реляционными базами данных, которая используется для хранения и управления большими объемами данных. Она является одной из самых популярных и широко используемых СУБД в мире благодаря своей простоте использования, надежности и гибкости.

Для разработки модели данных использован MySQL Workbench. Данный бесплатный продукт позволяет быстро, эффективно и наглядно разработать базу данных для собственных целей. Разработанная база данных находится в третьей нормальной форме, что позволяет достичь высокой производительности при отличной читаемости диаграмм.

При разработке данного приложения был сделан выбор в пользу применения объектно-ориентированной парадигмы для организации и хранения данных. Для этого внедрены классы, которые отображают необходимую информацию в системе. Эти классы, созданные и структурированные в соответствии со схемой, предоставляют абстракцию данных и предоставляют интерфейс для их управления и обработки.

В качестве механизма взаимодействия с базой данных выбран JDBC (Java Database Connectivity), что обеспечивает эффективное и надежное взаимодействие с различными реляционными базами данных из приложения, написанного на языке программирования Java. JDBC предоставляет набор API и инструментов для выполнения запросов к базе данных, обеспечивая тем самым стабильную интеграцию и эффективную передачу данных между приложением и хранилищем данных.

Документация играет ключевую роль в разработке программного обеспечения, являясь надёжным источником информации для разработчиков, пользователей и других заинтересованных сторон. Она дает понимание того, как использовать, настраивать и интегрировать программные продукты. Одним из мощных инструментов для создания такой документации является спецификация OpenAPI. OpenAPI — это формат описания интерфейсов RESTful API, который позволяет описывать функции, структуру запросов, ответов и другие аспекты API. Его использование упрощает создание, понимание и использование API, делая документацию более доступной и понятной для разработчиков. (рисунок 2)

Рисунок 2. Документация к приложению

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

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

Контейнеризация стала неотъемлемой частью разработки программного обеспечения, обеспечивая удобство и портативность в развертывании приложений. В этой главе мы углубимся в процесс контейнеризации Java-приложения.

В данной работе приложение контейнеризировано при помощи docker compose. Это инструмент для определения и запуска многоконтейнерных Docker приложений. Он позволяет определить сервисы, их зависимости и настройки в файле YAML, что делает управление и запуск группы контейнеров проще и более удобным.

С помощью Docker Compose возможно описать структуру приложения, включая сервисы, их параметры, сетевые настройки, а также другие аспекты, и запустить их все одной командой. Это особенно удобно, когда у есть приложение, состоящее из нескольких связанных сервисов, которые должны работать вместе.

Список литературы

  1. Строганкова, Н. В. Шаблоны программных платформ языка Java : учебное пособие / Н. В. Строганкова, К. В. Касьяненко, А. В. Хозяинов ; составители практикума входят: использование. — Москва : РТУ МИРЭА, 2021. — 83 с. — Текст : электронный // Лань : электронно-библиотечная система. — URL: https://e.lanbook.com/book/182466 (дата обращения: 22.11.2023). — Режим доступа: для авториз. пользователей.
  2. Лоре, А. Проектирование веб-API : руководство / А. Лоре ; перевод с английского Д. А. Беликова. — Москва : ДМК Пресс, 2020. — 440 с. — ISBN 978-5-97060-861-6. — Текст : электронный // Лань : электронно-библиотечная система. — URL: https://e.lanbook.com/book/179498 (дата обращения: 22.11.2023). — Режим доступа: для авториз. пользователей.
  3. Swagger. — Текст : электронный // habr : [сайт]. — URL: https://habr.com/ru/articles/541592/ (дата обращения: 22.12.2023).
Справка о публикации и препринт статьи
предоставляется сразу после оплаты
Прием материалов
c по
Осталось 5 дней до окончания
Размещение электронной версии
Загрузка материалов в elibrary
Публикация за 24 часа
Узнать подробнее
Акция
Cкидка 20% на размещение статьи, начиная со второй
Бонусная программа
Узнать подробнее