Skip to content

unit-team-spbu/gateway

Repository files navigation

API - медиатор для микросервисов

Данный документ содержит описание работы и информацию о развертке микросервиса API.

Название сервиса: gateway

Общедоступный IP-адрес: 20.52.2.24

Структура сервиса:

Файл Описание
gateway.py Код микросервиса
config.yml Конфигурационный файл со строкой подключения к RabbitMQ
run.sh Файл для запуска сервиса из Docker контейнера
requirements.txt Верхнеуровневые зависимости
Dockerfile Описание сборки контейнера сервиса
docker-compose.yml Изолированная развертка сервиса вместе с RabbitMQ
README.md Описание микросервиса

API

HTTP

Регистрация пользователей:

POST http://localhost:8000/register HTTP/1.1
Content-Type: application/json

{
    "login": <login>,
    "password": <password>
}

Response (Сообщение об успехе, либо ошибка):
Status: 201 - успех, 400 - ошибка регистрации
Content-Type: application/json

{
    "message": <msg>
}

Вход:

POST http://localhost:8000/login HTTP/1.1
Content-Type: application/json

{
    "login": <login>,
    "password": <password>
}

Response (Correct credentials):
Status: 202 - успех
Content-Type: application/json

{
    "token": <token>
}

Response (Wrong credentials):
Status: 400 - неверный логин или пароль
Content-Type: application/json

{
    "message": <msg>
}

В теле всех остальных запросов должен присутствовать JWT токен, если это зарегистрированный пользователь.

Получение ленты событий:

POST http://localhost:8000/feed HTTP/1.1
Content-Type: application/json

{
    "token": <token>, (Может быть не указан, если пользователь не авторизован)
    "tags": [..] - Теги для фильтрации (могут быть не указаны)
}

Response:
Status: 200 - успех
Content-Type: application/json

[
    {
        "_id": <event_id>,
        "title": <title>,
        "location": <location>,
        "startDate": <startDate>,
        "endDate": <endDate>,
        "description": <description>,
        "meta": <meta>,
        "tags": [..] - list
    },
    {
        "_id": <event_id>,
        "title": <title>,
        "location": <location>,
        "startDate": <startDate>,
        "endDate": <endDate>,
        "description": <description>,
        "meta": <meta>,
        "tags": [..] - list
    }
    ...
]

Response (При неверном токене):
Status: 403 - неверный токен
Content-Type: application/json

{
    "message": <msg>
}

Получение определенного события:

GET http://localhost:8000/feed/<string:event_id>?token=<token> HTTP/1.1

Query parameters:
{
    "token": <token> (Может быть не указан, если пользователь не авторизован)
}

Response (событие):
Status: 200
Content-Type: application/json

{
    "_id": <event_id>,
    "title": <title>,
    "location": <location>,
    "startDate": <startDate>,
    "endDate": <endDate>,
    "description": <description>,
    "meta": <meta>,
    "tags": [..] - list
}

Response (ошибка):
Status: 403 - неверный токен
Content-Type: application/json

{
    "message": <msg>
}

Получение интересов пользователя:

GET http://localhost:8000/profile/interests?token=<token> HTTP/1.1

Query parameters:
{
    "token": <token>
}

Response:
Status: 200 - успех
Content-Type: application/json

{
    "interests": ['tag1', 'tag2', ...],
    "ind": [True, False, False, ...]
}

Response (Не передан токен, либо он неверный):
Status: 401 - пользователь не авторизован (токен не передан), 403 - неверный токен
Content-Type: application/json

{
    "message": <msg>
}

Добавление новой анкеты интересов:

POST http://localhost:8000/profile/interests HTTP/1.1
Content-Type: application/json

{
    "token": <token>,
    "interests": ['tag1', 'tag2', ...],
    "ind": [True, False, False, ...]
}

Response (Сообщение об успешном добавлении, либо ошибка):
Status: 200 - успех, 401 - пользователь не авторизован (токен не передан), 403 - неверный токен
Content-Type: application/json

{
    "message": <msg>
}

Изменение интересов:

PUT http://localhost:8000/profile/interests HTTP/1.1
Content-Type: application/json

{
    "token": <token>,
    "interests": ['tag1', 'tag2', ...],
    "ind": [True, False, False, ...]
}

Response (Сообщение об успешном изменении, либо ошибка):
Status: 200 - успех, 401 - пользователь не авторизован (токен не передан), 403 - неверный токен
Content-Type: application/json

{
    "message": <msg>
}

Далее описаны запросы для лайков, для добавление в избранное заменить like на favorite в адресе.

Реакционное событие (добавление лайка):

POST http://localhost:8000/reaction/like HTTP/1.1
Content-Type: application/json

{
    "token": <token>,
    "event_id": <event_id>
}

Response (Сообщение об успехе, либо ошибка):
Status: 200 - успех, 401 - пользователь не авторизован (токен не передан), 403 - неверный токен
Content-Type: application/json

{
    "message": <msg>
}

Реакционное событие (получение всех лайков/наличие лайка у мероприятия):

GET http://localhost:8000/reaction/like?token=<token>&event_id=<event_id> HTTP/1.1
Content-Type: application/json

Query parameters:
{
    "token": <token>,
    "event_id": <event_id> - Указывается, если нужно узнать наличие лайка у конкретного мероприятия
}

Response (успех, запрос на все лайки):
Status: 200
Content-Type: application/json

[
    event_id1, - id, лайкнутых всех событий
    event_id2,
    ...
]

Response (успех, конкретное мерориятие):
Status: 200
Content-Type: application/json

{
    "value": (true or false)
}

Response (ошибка):
Status: 401 - пользователь не авторизован (токен не передан), 403 - неверный токен
Content-Type: application/json

{
    "message": <msg>
}

Реакционное событие (удаление лайка):

DELETE http://localhost:8000/reaction/like HTTP/1.1
Content-Type: application/json

{
    "token": <token>,
    "event_id": <event_id>
}

Response (Сообщение об успехе, либо ошибка):
Status: 200 - успех, 401 - пользователь не авторизован (токен не передан), 403 - неверный токен
Content-Type: application/json

{
    "message": <msg>
}

Развертывание и запуск

Локальный запуск

Для локального запуска микросервиса требуется запустить контейнер с RabbitMQ.

docker-compose up -d

Затем из папки микросервиса вызвать

nameko run gateway

Запуск в контейнере

Чтобы запустить микросервис в контейнере вызовите команду:

docker-compose up

если вы не хотите просмотривать логи, добавьте флаг -d в конце

About

No description, website, or topics provided.

Resources

License

Code of conduct

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published