Веб сервис, который позволяет сохранять заметки с комментариями.
Данное REST API сделано на основе библиотеки FastAPI и sqlalchemy для работы с базой данных. Для сохранения конфеденциальности пользователей используется хэширование пароля в хранилище, а также OAuth2 схема при передаче пароля и аутентификация по JWT токену. Все обращения к базе данных происходят в ассинхронных функциях. Данные валидируются при помощи аннотации и схем с ипользованием pydantic.
Swagger:
Регистрация
POST /api/v1/user/registerПараметры запроса:
username:string>= 5 charactersmatches ^\S+$password:string>= 8 characters
Аутентификация
POST /api/v1/user/tokenПараметры запроса:
username:stringpassword:string
При успешной аутентификиции сервис вернет JWT-токен.
При всех запросах связанных с заметками в headers надо передавать:
{"Authorization": "Bearer <JWT-токен, который был получен при аутентификации>"}Создание заметки
POST /api/v1/noteПараметры запроса:
title:stringurl:string | nullHttpUrlnote_text:stringcomment:string | nulltag:string | null
Удаление заметки по названию
DELETE /api/v1/noteПараметры пути:
note_title:string
Изменение полей заметки
PUT /api/v1/noteПараметры пути:
note_title:string
Параметры запроса:
title:string | nullurl:string | nullHttpUrlnote_text:string | nullcomment:string | nulltag:string | null
Получение заметки по названию
GET /api/v1/noteПараметры пути:
note_title:string
При передаче существующего названия будет выдана заметка с полями:
titleurlnote_textcommenttagdate_created
Требования:
- Python 3.11
- Poetry
- Docker
- Docker-compose
Перед запуском создайте файл с названием .env, в котором будут лежать параметры окружения.
Пример
POSTGRES_DB=database
POSTGRES_HOST=localhost
POSTGRES_USER=user
POSTGRES_PASSWORD=password
POSTGRES_PORT=5432
DB_CONNECT_RETRY=20
DB_POOL_SIZE=15
APP_HOST=http://127.0.0.1
APP_PORT=8080
PATH_PREFIX=/api/v1
SECRET_KEY=secret
ALGORITHM=HS256
ACCESS_TOKEN_EXPIRE_MINUTES=10080Создание виртуального окружения и установка зависимостей:
poetry install
Активация виртуального окружения:
poetry shell
Развертываение базы данных
make db
Проведение миграций базы данных
make migrate
Запуск сервиса
make run
Далее можно отрыть сайт с докумментацией сервиса и оттуда же отправлять запросы.
Ссылка на swagger и документацию сервиса будет иметь вид APP_HOST:APP_PORT/docs (APP_HOST, APP_PORT будут браться из файли .env).
Ссылка на swagger с файлом окружения (.env) из примера http://127.0.0.1:8080/docs.
Будет работать только с .env из примера (если меняете .env, то надо менять ссылки в js файлах). Корректно работает только при запушенном API из этого проекта.
Чтобы установить расширение, надо перейти в "Управления расширениями" (chrome://extensions/). Далее включите режим разработчика и нажмите на появившуюся кнопку "Загрузить распакованное расширение". После этого расширение будет доступно.
Расширение не предоставляет доступа ко всем возможностям API, все возможности смотрите выше в этом файле или на сайте документации, про который рассказывается в разделе Запуск API.
