Для запуска приложения нужен docker, docker-compose и make для запуска команд из Makefile.
Все процессы запускаются одной командой make up
, которая делает следующее:
- собирает образ с приложением и установленным мигратором для бд
- запускат контейнер с Postgres-ом
- запускает мигратор базы, который создаёт нужные таблицы
- запускает само приложение.
Далее можно отправлять запросы на адрес http://localhost:8080. Для удобства отправки запросов есть файлик requests.http, который поддерживается IDE-шками от JetBrains.
curl -X POST --location "http://127.0.0.1:8080/api/v1/user/register" \
-H "Content-Type: application/json" \
-d "{
\"first_name\": \"Hello\",
\"second_name\": \"There\",
\"birthdate\": \"2023-01-01\",
\"biography\": \"biography\",
\"city\": \"Moscow\",
\"password\": \"123456\"
}"
В ответ вернётся user_id, который является логином пользователя, но почему-то не указан в апишке (
{
"user_id": "7c48611e-4f5f-4bef-aeb4-9fcb5579af86"
}
В url нужно подставить значение логина пользователя, которое было получено при регистрации.
curl -X GET --location "http://127.0.0.1:8080/api/v1/user/get/7c48611e-4f5f-4bef-aeb4-9fcb5579af86" \
-H "Content-Type: application/json"
В ответ вернётся наш созданный ранее пользователь:
{
"id": "7c48611e-4f5f-4bef-aeb4-9fcb5579af86",
"first_name": "Hello",
"second_name": "There",
"birthdate": "2023-01-01",
"biography": "biography",
"city": "Moscow"
}
В запрос надо подставить user_id и passwod из шага регистрации:
curl -X POST --location "http://127.0.0.1:8080/api/v1/login" \
-H "Content-Type: application/json" \
-d "{
\"id\": \"7c48611e-4f5f-4bef-aeb4-9fcb5579af86\",
\"password\": \"123456\"
}"
В ответ вернётся PASETO токен, который в будущем будет использоваться для авторизации вызовов API-шки.
{
"token": "v4.local.YhqXjuSA3F4cVuiW00iO4OXd57jPnNpvjlblxjgqVi_fafbK7gqU3CxPEjnpZClsxbdIPNCYb_Beb4kVKYEmRLhL8ngnNUuK7B_gbARBXfPXTDkcPtqqQXj1Ahvuhwko6RPiSp94LxkcMAg8GylcaWqxuwIgJacZXLA1yVb9zzYFNpImTKQnTAYmLtD-JDkdYe9PE7gsnnehZ7lrX03Ksp0XskwFaUB0EqNQao5xoaySGyxE3LKJXCv3NpQAgrTERGJX1IT4FF8M"
}
Требуется разработать создание и просмотр анкет в социальной сети. Функциональные требования:
Простейшая авторизация пользователя. Возможность создания пользователя, где указывается следующая информация:
- Имя
- Фамилия
- Возраст
- Пол
- Интересы
- Город
- Страницы с анкетой.
Нефункциональные требования: Любой язык программирования. В качестве базы данных использовать MySQL (при остром желании PostgreSQL/MariaDB, но стоит иметь ввиду, что по этим базам может не быть возможности задать вопрос преподавателю). Не использовать ORM Программа должна представлять из себя монолитное приложение. Не рекомендуется использовать следующие технологии:
- Репликация
- Шардинг
- Индексы
- Кэширование
Для удобства разработки и проверки задания можно воспользоваться этой спецификацией и реализовать в ней методы:
- /login
- /user/register
- /user/get/{id} Фронт опционален. Сделать инструкцию по локальному запуску приложения, приложить Postman-коллекцию. ДЗ принимается в виде исходного кода на github и Postman-коллекции.
Требования:
- Есть возможность авторизации, регистрации, получение анкет по ID.
- Отсутствуют SQL-инъекции.
- Пароль хранится безопасно.