forked from Alexey/DAS_2024_1
53 lines
2.4 KiB
Markdown
53 lines
2.4 KiB
Markdown
|
# Лабораторная работа №3 - REST API, Gateway и синхронный обмен между микросервисами
|
|||
|
|
|||
|
## Задание
|
|||
|
|
|||
|
* Создать 2 микросервиса, реализующих CRUD на связанных сущностях.
|
|||
|
* Реализовать механизм синхронного обмена сообщениями между микросервисами.
|
|||
|
* Реализовать шлюз на основе прозрачного прокси-сервера nginx.
|
|||
|
|
|||
|
## Предметная область:
|
|||
|
|
|||
|
В качестве предметной области использовался пример 19-го варианта. Имеются 2 сущности: одна сущность - книга в библиотеке, вторая - тематика.
|
|||
|
Поля тематики: УИД (уникальный идентификатор) тематики, номер, название. Поля книги: УИД книги, Автор, Название, Год издания, УИД тематики, к которой принадлежит книга.
|
|||
|
|
|||
|
|
|||
|
## Запуск ЛР:
|
|||
|
|
|||
|
Введем в терминале команду:
|
|||
|
```
|
|||
|
docker compose up --build
|
|||
|
|
|||
|
```
|
|||
|
Эта команда сначала выполнит сборку, а затем запустит контейнеры.
|
|||
|
|
|||
|
Также нужно убедиться в том,что 80 порт свободен и тогда вся система запустится.
|
|||
|
|
|||
|
Запускаем Postman и запускаем следующие запросы:
|
|||
|
|
|||
|
![](lab_3.1.png "")
|
|||
|
|
|||
|
|
|||
|
Для каждой сущности были реализованы CRUD-операции.
|
|||
|
|
|||
|
Theme сервис:
|
|||
|
|
|||
|
GET /themes — получить все темы
|
|||
|
POST /themes — создать новую тему
|
|||
|
GET /themes/{id} — получить тему по ID
|
|||
|
GET /themes/with-books/{themeId} — получить все книги, которые относятся к themeId
|
|||
|
PUT /themes/{id} — обновить тему по ID
|
|||
|
DELETE /themes/{id} — удалить тему по ID
|
|||
|
|
|||
|
Book сервис:
|
|||
|
|
|||
|
GET /books — получить все книги
|
|||
|
POST /books — создать новую книгу
|
|||
|
GET /books/{id} — получить книгу по ID
|
|||
|
PUT /books/{id} — обновить книгу по ID
|
|||
|
DELETE /books/{id} — удалить книгу по ID
|
|||
|
|
|||
|
|
|||
|
# Видео
|
|||
|
https://vk.com/video230744264_456239105?list=ln-xiFZDAJoFyAsG9Dg2l
|