Очень хорошо 👍
Все учтено, код читается, а значит поддерживаться будет легко.
Много лишних и опасных портов выставлено наружу в docker-compose.yml. Пользователю достаточно будет оставить только порт nginx. Для разработки https://habr.com/ru/company/otus/blog/337688/
Давайте трейсер занесем под if settings.enable_tracer, чтобы была возможность его отключить в тех же тестах
Вот сюда рекомендую добавить параметр resource, чтобы сервис был не unknown_service в интерфейсе JaegerUI
Имя хоста и порт нужно отправить в настройки и переменную окружения.
Везде в моделях БД, где вы используете поле типа String, нужно указывать максимальную длину поля. Это позволяет оптимизировать расход ресурсов и защищает от случаев, когда в такие поля пытаются вставить огромные тексты. Если тебе точно нужно не ограничивать длину строки, то лучше использовать поле Text. https://flask-sqlalchemy.palletsprojects.com/en/2.x/models/
Имена провайдеров (google, yandex и т.д.) лучше поместить в enum. Работа с литералами - всегда не очень хорошая практика. Далее с развитием проекта может возникнуть необходимость их использовать в коде. Работа с enum, как минимум, избавит нас от опасности опечатки.
Лишние скобки, можно без них return 'google$' + me['id'], me.get('email').split('@')[0], me.get('email')
Не забывайте указывать типы принимаемых параметров и возвращаемых значений в методах
Одним из заданий было: Создайте интеграцию Auth-сервиса и AsyncAPI-сервиса, используя контракт, который вы сделали в прошлом задании. Т.е. в сервисе выдачи, который у нас на FastAPI добавить middleware, например, которая будет разбирать токен или ходить с ним в сервис авторизации и в зависимости от прав давать тот или иной контент. Например, авторизованным - все, гостям - только списком фильмы без подробностей. Посмотрите очень подробный и интересный пример реализации https://testdriven.io/blog/fastapi-jwt-auth/ , самое интересное в разделе Securing Routes
У нас уже реализована зависимость через JWTBearer для ручек, в которых необходима авторизация (все кроме поиска фильма и поиска кинопроизведений по страницам).
У нас уже реализована зависимость через JWTBearer для ручек, в которых необходима авторизация (все кроме поиска фильма и поиска кинопроизведений по страницам).
Очень хорошо 👍 Все учтено, код читается, а значит поддерживаться будет легко.
if settings.enable_tracer
, чтобы была возможность его отключить в тех же тестахreturn 'google$' + me['id'], me.get('email').split('@')[0], me.get('email')