Архитектура FastAPI приложения | Шаблон

Sdílet
Vložit
  • čas přidán 28. 01. 2023
  • В данном видео вы увидите, как можно легко организовать базовую структуру приложения FastAPI для дальнейшего удобного масштабирования проекта, не упираясь в ограничения архитектуры. Сможете получить удобство навигации по проекту и эффективность в командной разработке
    Ссылка на GitHub шаблона - github.com/geekceo/FastAPI-ap...

Komentáře • 38

  • @user-po5tg2sy1j
    @user-po5tg2sy1j Před rokem +11

    Спасибо. Отличное видео. Очень хочется увидеть полный проект, который максимально приближен к "боевым" проектам. и связка в базой, брокерами, обработчиками и тд...

    • @tagirkhalilov8227
      @tagirkhalilov8227  Před rokem +2

      Привет, спасибо за фидбек) Готовлю материал для этого видео, в скором времени выложу)

  • @annasmur4556
    @annasmur4556 Před rokem +5

    Интересно! Продолжай)

  • @user-fg4wm8hr7n
    @user-fg4wm8hr7n Před rokem

    Спасибо, отличный подход!

  • @citieslg
    @citieslg Před rokem +1

    Спасибо за урок. Прошел с удовольствием
    Огромная просба продолжай плиз

  • @ffff00-korj
    @ffff00-korj Před rokem

    Класс, давно искал такой, формат

  • @user-tb9or7ct2q
    @user-tb9or7ct2q Před rokem

    Круто, отличный ролик!

  • @user-xr2vl5wo7w
    @user-xr2vl5wo7w Před rokem

    Благодарю, Отличное видео. Интересно было бы увидеть реализацию авторизации и регистрации через FastAPI-users или другую библиотеку👍

  • @rozovayautopiya
    @rozovayautopiya Před 3 měsíci

    Превосходно

  • @TheVenelo
    @TheVenelo Před rokem

    Не много странно, что в описании не указана ссылка на такой шаблон, для более наглядного изучения вне видео. Спасибо за контент)

    • @tagirkhalilov8227
      @tagirkhalilov8227  Před rokem +1

      Привет! Спасибо, что указал на это, добавил в описание. Ссылка - github.com/geekceo/FastAPI-app-Structure-Template

  • @semimaks
    @semimaks Před 3 měsíci

    Спасибо за краткое объяснение без лишней воды!
    Я так понимаю вы применяете в своём подходе методологию чистой архитектуры?

  • @alexeymatveev9031
    @alexeymatveev9031 Před 11 měsíci

    что -то не получается, жалко нет requirements.txt... A, все, заработало. Спасибо! Супер видео, вернулся спустя время, очень в тему!

  • @user-ok7xl2hl7t
    @user-ok7xl2hl7t Před rokem +1

    Интересно посмотреть на другие архитектуры но я обычно немного другую использую

    • @tagirkhalilov8227
      @tagirkhalilov8227  Před rokem +1

      Привет! Если у тебя есть репозиторий с примером твоей архитектуры, то мог бы ты дать ссылку? Я бы с удовольствием посмотрел)

    • @Syberby
      @Syberby Před 9 měsíci

      @@tagirkhalilov8227 я бы тоже)

  • @zrxmax_
    @zrxmax_ Před 7 měsíci

    можно писать просто from .routes import Route
    . обозначит текущий каталог

    • @tagirkhalilov8227
      @tagirkhalilov8227  Před 7 měsíci +1

      Привет, это обозначает текущий каталог, из которого запущено приложение, поэтому относительных импортов/путей лучше избегать и использовать абсолютные

  • @wadyn95
    @wadyn95 Před rokem +1

    Какое-то странное стремление всё сделать в ООП стиле, лишнее усложнени

  • @user-vf7pc4tn9z
    @user-vf7pc4tn9z Před rokem +2

    Ох ты тут намудрил а не проще было класический SOA?

  • @bxxdan
    @bxxdan Před rokem +1

    Можете создать репозиторий этого шаблона на гитхабе?

    • @tagirkhalilov8227
      @tagirkhalilov8227  Před rokem +3

      Привет! Создал, вот ссылка на репозиторий - github.com/geekceo/FastAPI-app-Structure-Template

  • @MrHopeOrLess
    @MrHopeOrLess Před rokem

    Отличное видео! Как сделать себе такие же иконки в ВСе?)))))

    • @tagirkhalilov8227
      @tagirkhalilov8227  Před rokem +1

      Привет! Вот ссылка на расширение для VS Code - marketplace.visualstudio.com/items?itemName=vscode-icons-team.vscode-icons

  • @arka4443
    @arka4443 Před rokem +3

    Для чего это морока с роутами? Есть какой то аргумент в пользу ооп здесь?

    • @tagirkhalilov8227
      @tagirkhalilov8227  Před rokem

      Привет! Удобство навигации и заклад на масшатабируемость

    • @arka4443
      @arka4443 Před rokem

      @@tagirkhalilov8227 удобство? Масштабируемость? В этих классах наоборот легче запутаться, а что насчет масштабируемости? Фреймворк ты не будешь менять, что будет масштабироваться?

    • @tagirkhalilov8227
      @tagirkhalilov8227  Před rokem

      Будут добавляться сопутствующие технологии, orm, базы данных, брокеры сообщений и для взаимодействия со всем этим нужно все правильно разбить по пакетам и модулям. А насчет удобства - мне удобно, когда все лежит на своих полках, когда каждый класс и модуль отвечает за определенное действие. Может кому-то удобно по-другому. В видео я описал свое видение и показал то, что удобно мне, полагая, что поделюсь с другими, кто ищет удобную архитектуру для своих проектов. Я не надеюсь на то, что с этим согласятся все. Мое желание - это поделиться

    • @arka4443
      @arka4443 Před rokem +2

      @@tagirkhalilov8227 а чем фп не угодило? Тоже ведь можно разбить на модули) и каждая функция имеет свою зону ответственности. Ну раз уж так тебе вкусно, то вопросов нет, но как по мне это просто злоупотребление ООП

    • @tagirkhalilov8227
      @tagirkhalilov8227  Před rokem

      Несомненно, каждая функция будет иметь свою зону ответственности. Однако на мне лично не удобно читать код, когда все в одном файле. В маленьких проектах можно этого не заметить, а при крупной разработке, а уже тем более в enterprise, когда бизнес-логика часто меняется - это становится, в каком-то смысле, просто невыносимо

  • @lil_fix
    @lil_fix Před rokem

    Мммм, что-то знакомое
    Можно ссылку на оригинальный проект?

  • @unstoppableharrison140

    Какие главные сильные стороны у FastAPI?

    • @tagirkhalilov8227
      @tagirkhalilov8227  Před rokem +1

      Привет! Скорость и асинхронность за счет того, что основан на Starlette; поддержка OpenAPI и Swagger, что позволяет быстро генерировать документацию к своему API; расширяемость - есть много плагинов и расширений для FastAPI, поэтому можно легко дополнять встроенные возможности фреймворка и увеличивать функциональность

    • @unstoppableharrison140
      @unstoppableharrison140 Před rokem

      @@tagirkhalilov8227 спасибо за ответ!

  • @annaarbuz
    @annaarbuz Před rokem +1

    Ужос

  • @romanok2014
    @romanok2014 Před rokem

    Мне понравился гайд, понятно и без воды. Но мне интересно есть ли смысл так усложнять код через такие абстракции с классами. Например подход как тут (гитхаб) AlexDemure/fastapi-architecture выглядит проще и в то же время такой же понятный для командной разработки. Хотелось бы услышать мнение на счет этого

    • @tagirkhalilov8227
      @tagirkhalilov8227  Před rokem +10

      Привет! Спасибо за отзыв) Касательно отличий между подходами в моем видео и в проекте AlexDemure:
      1) Пройдясь по структуре проекта AlexDemure можно заметить, что там много пакетов, действительно, в этом нет ничего страшного, ведь проекты могут быть сколько угодно огромными. Тут дело в том, что некоторые из них можно классифицировать по роду назначения и разбить на отдельные родительские пакеты. Именно это я показывал, когда создавал 3 основных пакета и говоря про их назначение. Это намного упростит навигацию по проекту, так как разработчик будет сразу знать, где нужный ему модуль. Это позволит не отвлекаться на поиск среди множества пакетов, находящихся в одной директории.
      2) Далее, касательно самой абстракции, в самом определении абстракции дается хороший совет о том, что каждый модуль/класс должен выполнять конкретную задачу и должен быть хорош именно в ней. Если задуматься - то это очень упрощает дальнейшую разработку. Ведь мы всегда знаем какой модуль за что отвечает. Один за инициализацию сервера, второй за регистрацию путей, третий за события. Каждый хорош в своем. Мы всегда знаем в какой модуль залезть для правок и обновлений. В свой подходе AlexDemure старался придерживаться этого, но не везде, из-за этого есть путаница, например в самом модуле main.py в пакете core. Вроде бы у него есть отдельный модуль для регистрации путей, но все равно в модуле main опять происходит регистрация, и описание событий там же, и запуск uvicorn там тоже. Получается сборная солянка и при дальнейшей работе нужно будет думать и искать - а где же я оставил события, какая из регистраций путей нужна мне сейчас? В файле urls.py или которую я в main писал?
      В подходе, который описан в видео такой путаницы быть не может, так как каждый пакет отвечает за конкретные модули, связанные "родом деятельности", и каждый модуль выполняет ровно одну свою задачу.
      Свой подход я выработал на основе именно коммерческой разработки, где так же сталкивался с разным описанием архитектуры приложения разной степени эффективности и удобства. В конце концов подытожил все в такой вид, о котором говорил и показывал в видео)