Данный сервис, предоставляет из себя REST API интерфейс с методами;
- добавление заметок
- вывод списка заметок, пользователь (user) имеет доступ только к своим заметкам, администратор (admin) имеет доступ ко всем заметкам (Данные хранятся в PostgreSQL).
- Сервис интегрирован с Яндекс.Спеллер (валидация орфографических ошибок).
- В сервисе предусмотрена аутентификация и авторизация.
- Так же прописаны основные тесты.
- Развернуть (запустить) сервис в Docker-контейнере
docker-compose up --build
После запуска сервис будет слушать порт 8080.
2) Регистрация (создание/авторизация) пользователя. В postman выбираем метод POST переходим к http://localhost:8080/users указав в теле запроса следующие поля
{
"username": "example_user",
"password": "password123",
"role": "user"
}
Получаем id пользователя и токен (можем переходить сразу к 4 пункту).
3) Если мы уже авторизованы в сервисе, тогда можете пропустить 2 пункт и проходить аутентификацию. В postman выбираем метод POST переходим к http://localhost:8080/auth указав в теле запроса следующие поля
{
"username": "example_user",
"password_hash": "password123"
}
Получаем данные пользователя и токен.
4) Теперь у вас есть токен пользователя с ролью 'user', и вы можете создать заметку. В postman выбираем метод POST переходим к http://localhost:8080/notes в разделе Auth раздел Type выбираем Bearer Token и в поле вставляем ваш токен который вы получили на предыдущем шаге. После чего в разделе Body создаем заметку по примеру ниже:
{
"content": "This is a test note."
}
Вы можете написать заметку с ошибками они будут автоматически исправлены сервисом Яндекс.Спеллер перед сохранением заметки в БД. Нажмите "Send". 5) Если все выполнено правильно, вы должны получить ответ с данными созданной заметки. 6) Для просмотра своих заметок выполняем 4 пункт, но меням метод на GET и тело запроса указывать не обязательно.
- Обработчики API: Для начала создал роуты и основные функции обработчики для создания и получения заметок. Настройка соединения с PostgreSQL; Определение модели данных для заметок; Определение модели данных для пользователя; Реализация API-методов;
- Аутентификация и авторизация: Использовал базовую аутенификацию, авторизация написана на основе ролей, чтобы разделить пользователей на 2 группы: "admin" и "user". Пароли хранятся в зашифрованном виде.
- Интеграция с Яндекс.Спеллер: Перед сохранением заметки для проверки правописания делается http-запрос к API Яндекс.Спеллера.
- Логирование: Использовал стандартный пакет 'log'.
- Запуск сервера: Использовал net/http и библиотеку gorilla.