Пет-проект на Python за 50 минут. Курс по FastAPI для начинающих [2024]

Sdílet
Vložit
  • čas přidán 8. 05. 2024
  • Разбор фреймворка FastAPI на языке Python с первых строчек до деплоя на реальный сервер.
    Текстовая версия: slc.tl/5nqib
    Облачный сервер для ваших проектов: slc.tl/3c00t
    Освой backend разработку на Python с НУЛЯ до развертывания в продакшн за 3 месяца: clck.ru/38iU5C
    🚨 Продажи открыты только до 31 мая 2024 года! 🚨
    Прочитать отзывы к курсу можно на Stepik: clck.ru/38ZdhZ
    Пишу про лайфхаки при поиске работы, рынок труда и способы развития разработчиков в телеграм канале - подписывайся: t.me/artemshumeiko
    Python сообщество в телеграме (здесь тебе помогут с любым вопросом): t.me/python_community_rus
    Полезные материалы для бэкендера в моем телеграм боте: t.me/ArtemShumeikoBot
    Поддержать меня и получить ранний доступ к видео можно здесь: boosty.to/artemshumeiko
    Ссылка на репозиторий здесь: t.me/artemshumeiko/64
    0:00 - Для чего используется FastAPI
    2:39 - Как написать простейшее приложение на FastAPI
    6:26 - Как применять Pydantic в FastAPI
    11:48 - Как работать с базой данных из FastAPI
    19:44 - Как делать запросы к базе данных через паттерн репозиторий
    26:37 - Что такое роутер в FastAPI
    34:23 - Как развернуть FastAPI приложение через Docker
    39:02 - Как развернуть FastAPI приложение на реальный сервер в облаке
    #backend #python #fastapi #фастапи #pydantic #шумейко

Komentáře • 84

  • @artemshumeiko
    @artemshumeiko  Před 2 měsíci +6

    Освой backend разработку на Python с НУЛЯ до развертывания в продакшн за 3 месяца: clck.ru/38iU5C
    🚨 Продажи открыты только до 31 мая 2024 года! 🚨
    Прочитать отзывы к курсу можно на Stepik: clck.ru/38ZdhZ

  • @AAShakirov
    @AAShakirov Před měsícem +3

    Как же круто! Все понятно, четко структурированно, речь грамотная, смотреть и слушать приятно! Спасибо огромное за урок!

  • @---fc8jp
    @---fc8jp Před 2 měsíci +2

    Благодарю за труды. Вы помогаете сориентироваться в открытом океане информации. Пойдёшь не туда и пару дней впустую ))

  • @sanjarkhamrakulov1152
    @sanjarkhamrakulov1152 Před 2 měsíci +1

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

  • @Anonim-im6ln
    @Anonim-im6ln Před 2 měsíci

    Супер!❤

  • @endfine9230
    @endfine9230 Před 2 měsíci +12

    Первый ютубер которого смотрел на 0.8-0.9х 😂 Спасибо за годные курсы!

    • @andreypopov4916
      @andreypopov4916 Před 21 dnem

      То же самое: первый раз ставил на 0.75 подобный урок. Обычно ставлю на 1.25 -1.5.

  • @alexturner6417
    @alexturner6417 Před 2 měsíci

    Отличнейшее видео для начинающих фастаперов! Рекомендейшн! 5 звезд, благодарочка и пожелание удачи!

  • @torrettogreenwich4681
    @torrettogreenwich4681 Před 2 měsíci +1

    🔥 лучший

  • @GeniusGS-ko4nt
    @GeniusGS-ko4nt Před 2 měsíci

    Обожаю видосы твои, слушать очень приятно!!!😁

  • @FlexSyde
    @FlexSyde Před 17 dny +1

    Блин с твоей подачей бы хотел курс про докер послушать, прикольно рассказываешь. Да и в целом про деплой и ci/cd штучки

  • @extressar679
    @extressar679 Před 2 měsíci +14

    Иногда хочется и контента для уже не совсем начинающих, может какие то средние проекты или фишки/лайфхаки, у тебя хорошая подача так что будет интересно посмотреть

    • @silverguard3638
      @silverguard3638 Před 2 měsíci

      Это есть в его платном курсе) Сам прошел доволен как слон. На работе переделываю некоторые проекты сейчас на FastApi

  • @user-lt5qw6br5w
    @user-lt5qw6br5w Před 2 měsíci

    Спасибо!

  • @happydeveloper752
    @happydeveloper752 Před 2 měsíci +1

    Спасибо за видео!
    11:05 Нужно обратить внимание, в видео не говориться, когда в параметрах функции используется Annotated[STaskAdd, Depends()], в запросе post, то он использует query Params, вместо body Params.

  • @salahytus
    @salahytus Před 11 dny +1

    СПАСИБО ВАМ ОГРОМНОЕ!

    • @artemshumeiko
      @artemshumeiko  Před 11 dny

      пожалуйста) приятно слышать

  • @sanjarkhamrakulov1152
    @sanjarkhamrakulov1152 Před 2 měsíci

    Спасибо

  • @OLEGAROS
    @OLEGAROS Před 8 dny

    спасибо) очень познавательно)

    • @artemshumeiko
      @artemshumeiko  Před 8 dny

      спасибо! успехов в изучении

  • @seduelgames8765
    @seduelgames8765 Před 2 měsíci

    Cool!!!

  • @pavelnikiforov235
    @pavelnikiforov235 Před 2 měsíci +1

    Спасибо за качественные обучающие видео! Было бы очень интересно еще интеграция ML и Fastapi👍

  • @suspiciousgoose7904
    @suspiciousgoose7904 Před měsícem

    Очень полезный ролик! Спасибо! Все сделал, все работает) хочу сделать свое приложение. Следующие шаги: подключить posgresql и фронт

    • @artemshumeiko
      @artemshumeiko  Před měsícem +1

      спасибо большое! очень рад, что вам понравилось
      скоро на канале будет больше видео для новичков, в том числе по фронтенду

  • @user-mn7lg2wp6i
    @user-mn7lg2wp6i Před 19 dny

    Замечательный туториал! Сам ML-разработчик - решил иучить FastAPI, т.к. вижу, что фреймворк очень популярен. Было бы очень круто, если бы выша серия про FastAPI + ML

    • @user-ew2qs9my3s
      @user-ew2qs9my3s Před 7 dny

      Сам устраиваюсь после вуза в лабораторию машинного обучения, поэтому интересно поинтересоваться, а для чего вам технологии web-разработки?

  • @cryptokrupt
    @cryptokrupt Před 2 měsíci

    от слова 'тасочки/-а' чуть нервный срыв не случился

  • @user-kt4yy5cf5e
    @user-kt4yy5cf5e Před 2 měsíci

    11:35 при использовании депендс в схеме для пост запроса, то параметры передаются в квери а не боди а значит урезаются в количетсве символов передачи и они не кодируются и тем самым видны всем, так что при использовании схемы в методе пост не желательно использовать депендс для создания можно как дополнительные параметры для создания объекта

    • @artemshumeiko
      @artemshumeiko  Před 2 měsíci +2

      хорошее замечание, спасибо

  • @user-rn8kt4ui1b
    @user-rn8kt4ui1b Před 2 měsíci +2

    Ml + Fast api очень интересно

  • @Roman-kn7kt
    @Roman-kn7kt Před 2 měsíci

    Привет, как всегда вы невероятно круто объясняете! а можно попросить вас сделать туториал, возможна за плату по NGINX для разработки Fullstack application based on FastAPI

  • @user-yj8kp1kx6x
    @user-yj8kp1kx6x Před 2 měsíci +1

    Для более правильногго создания фастапи приложения используя паттерн репозиторий так же можно создать базовый абстрактный класс BaseRepo, от которого будут наследоваться конретные репозитории и там описать CRUD методы

  • @tru3ty209
    @tru3ty209 Před 2 měsíci +1

    Вопрос не по теме ролика: как с помощью подключения fastapi_users роутера у нас получаются post запросы в swager(fastapi/docs). Просто я ломаю голову и не понимаю. Обычно,создавая роутер мы в файле прописываем все нужные нам post , get, и др.
    Я смотрел зависимости, изучал документацию, там ничего путного не написано. Просто хочу реализовать форму для аутентификации на фронте, и чтобы данные передавались в нужный /auth/jwt/ post запрос
    UPD: Про swager я имел ввиду доки fastapi

  • @donlinoleum831
    @donlinoleum831 Před 2 měsíci

    Хорош!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

  • @user-wh7hm2lx7t
    @user-wh7hm2lx7t Před 2 měsíci

    Привет, классный курс, не хочешь разобрать такую тему как RBAC + FastAPI, на русском видосы почти не нашел))

  • @danielcrigan1301
    @danielcrigan1301 Před 20 dny

    хороший гайд! спасибо!
    Вопрос: как настроить PyCharm когда прописываешь атрибуты, функий и.т.д Pycharm автоматически импортировал модули ?

    • @artemshumeiko
      @artemshumeiko  Před 17 dny

      Нужно работать внутри виртуального окружения и активировать его внутри PyCharm’а

  • @hovharoyan3262
    @hovharoyan3262 Před 2 měsíci

    Спасибо большое)Про alembic будет видео?)

    • @artemshumeiko
      @artemshumeiko  Před 2 měsíci

      Уже есть
      czcams.com/video/SD6_EPg0Aqk/video.html

  • @rimashi1089
    @rimashi1089 Před dnem

    Здравствуйте, Артем, такие два вопроса, я посмотрел ваши видео по fastapi , как раз писал одностраничный "фоторедактор" и у меня такие вопросы.
    Я передаю файл и ещё один параметр num в formData при помощи ajax, как мне считать данные из этой формы, так чтобы там загрузить файл на сервер и вытащить num?
    И как можно создать ссылку на файл на сервере? Я имею ввиду то, что вот произошли преобразования с изображением, оно сохранилось, я получил его filename и как теперь сделать так, чтобы он(файл) отобразился на клиенте? По аналогии с нодой я создал отдельный роут гет для отображения файлов с fileResponse и отдельно создаю ссылку таким же методом. Однако она даже как будто не подставляется в стили... Я написал, чтобы картинка была в background и подставляю ее при помощи jQuery, хочу сказать, что если пользователь меняет файлики, то все работает
    Буду невероятно признателен, если поможете, неделю сижу, ничего толком не нашел

    • @artemshumeiko
      @artemshumeiko  Před dnem

      Для парсинга данных из FormData на стороне FastAPI нужен Form(). Дока тут: fastapi.tiangolo.com/tutorial/request-forms/?h=form
      Про картинку не до конца понял. Картинку можно сохранить локально на бэке, в базу данных или S3 хранилище. Можно сделать GET ручку на получение картинки, если она лежит в базе или на диске, а если в S3, то на фронт можно отправлять URL самой картинки, чтобы браузер сходил сам за картинкой

    • @rimashi1089
      @rimashi1089 Před dnem

      @@artemshumeiko да, я читал эту статью, но не до конца понял, т.е. вот у нас функция (file: Annotated[file, Form()], num: Annotated[int, Form()]
      Где file и num это ключи по которым я добавил значения в formData?
      По поводу изображения...оно лежит локально в папке на сервере, я написал эндпоинт для отображения этого изображения
      @app.get("show/{filename}")
      def show_images(filename: str)
      return FileResponse(path='/static/', mimetype='image/png')
      И вот оно не работает...на клиенте я указываю ссылку как /show/filename и...он как будто не подставляет ссылку, на бэке вроде ошибок нет и в логах пусто...лишь ошибка ajax'a, какая именно не понятно, там просто ajax error и следом 404...

    • @artemshumeiko
      @artemshumeiko  Před dnem

      ​@@rimashi1089 > Где file и num это ключи по которым я добавил значения в formData?
      Да.
      По поводу отображения файла. В параметр path вы должны указать адрес файла по типу /static/{filename}.jpg, а не просто /static
      Вообще, заходите в мое сообщество, вам там помогут: t.me/python_community_rus

    • @rimashi1089
      @rimashi1089 Před dnem

      @@artemshumeiko спасибо, вы уже очень помогли, и хотя бы прочитали и дали ответ, спасибо.
      А, и благодарю за ваши прекрасные курсы - плейлисты, я считаю, что так и должны выглядеть доки в общем виде)

  • @mailvoodoo
    @mailvoodoo Před 2 měsíci +3

    Спасибо за видео!
    31:38 Не подскажите, а почему не используется просто респонс модел в роутере для этой цели (репозиторий возвращает объект БД)? - Что-то типа @router.get("/", response_model=List[STask])?
    И еще: поддерживаю идею показать ML+FastAPI, очень хотелось бы.
    И присоединяюсь к предложению-просьбе о таком же базовом уроке/курсе, только уже не для начинающих, а для начинающих с Фастапи но с опытом разработки на других фреймворках.
    Т.е. показать базовый пример (принимая во внимание, что основы должны быть уже известны) полноценного мелкого проекта, но с уклоном в реальную разработку (постгрес с докером разделение на настройки проекта для прода, дева, базовые тесты) и тоже все это верхнеуровнево, чтобы просто увидеть как оно относительно типично, только с Фастапи.
    Мне кажется, сейчас много уроков именно для начинающих в программировании, но мало для тех, кто имеет опыт, и хочет освоить инструмент уже как очередной. А тут бы как раз и посмотреть на реальные примеры из коммерческой разработки. Т.к. в мануалах этого тоже не увидишь.
    Еще раз спасибо и успехов!

  • @alexen5465
    @alexen5465 Před 28 dny

    docs не открывается. ошибки выдает Failed to load API definition.

  • @user-tn8qm6qq8r
    @user-tn8qm6qq8r Před 2 měsíci +2

    у меня в репозитории, когда я таски сериализую с Pydantic, через model_validate, выдаёт ошибку. Это может быть связано с тем, что я в модельке в ORM поля задаю не при помощи Mapped, а при помощи Column?

    • @artemshumeiko
      @artemshumeiko  Před 2 měsíci

      нет, разница быть не должно
      Можете задать вопрос и прикрепить скриншоты в нашем Python сообществе: t.me/python_community_rus
      Вам помогут с вопросом

    • @Leha_from_Zavod
      @Leha_from_Zavod Před 2 měsíci

      @@artemshumeiko Артем, очень заинтересовал вопрос подключения платежных систем(Freekassa, Enotio, Sberpay) в микросервис
      e-commerce реализованный на fastapi.Нашел только связку fastapi+Stripe, но cистема не работает в РФ, можно где то найти шаблон реализации?

    • @busipac1467
      @busipac1467 Před 2 měsíci

      То же самое

    • @vovchic3593
      @vovchic3593 Před 2 měsíci +2

      Добавьте в STask model_config = ConfigDict(from_attributes=True)

  • @kochenof
    @kochenof Před 2 měsíci

    Привет. Можешь поделиться знаниями по CD/CI?

    • @artemshumeiko
      @artemshumeiko  Před 2 měsíci +4

      да, планирую в будущем показать как самостоятельно сделать CI/CD для своего сервера

  • @popovanatoliy4736
    @popovanatoliy4736 Před 4 dny

    возвращать none там, где мы можем вернуть пустое значение не стоит.

  • @JIJI-zv1qp
    @JIJI-zv1qp Před 2 měsíci

    раскажите о ci/cd

  • @talvin22
    @talvin22 Před 2 měsíci

    Есть возможность портировать твой курс по FastAPI так же на платформу Udemy? Очень хотелось бы его пройти, но из-за границы нет возможности(

    • @artemshumeiko
      @artemshumeiko  Před 2 měsíci

      Можно оплатить курс через Boosty: boosty.to/artemshumeiko или криптой, и я выдам вам доступ до всех материалов
      Можете написать в телегу по любым вопросам оплаты: t.me/artem_shumeiko_support

  • @digitalberd
    @digitalberd Před 2 měsíci

    Пытаюсь сейчас вместо нотификации по паролю - сделать как у вастрика на сайте - по запросу генерируется 6-ти значное число, отправляется на почту и в телеграмм, человек его вводит - и ему выдают аутентификацию.
    Столкнулся с тем, что в fastapi users очень сложно отключить использование пароля для аутентификации...
    Хранить это 6-ти значное число в текущем поле hashed password не хочу - т.к. число влазит в 4 байта - и хранить его в 1024 символах с шифрованием - очень неэффективно.
    Если есть возможность снять на эту тему видео - было бы здорово!

    • @artemshumeiko
      @artemshumeiko  Před 2 měsíci

      звучит круто
      запишу в список идей для видео

  • @user-hr3ij5zf5h
    @user-hr3ij5zf5h Před měsícem

    Привет, а что за плагин, что подсвечивает сколько раз использован класс?

    • @artemshumeiko
      @artemshumeiko  Před měsícem

      Это видимо только в Professional версии PyCharm

  • @wendypython
    @wendypython Před 24 dny

    Здравствуйте а ваш кур платный или бесплатный ?

    • @artemshumeiko
      @artemshumeiko  Před 24 dny

      Тот, что рекламируется в видео - платный
      Подробнее тут: artemshumeiko.ru

  • @user-wk9nn4hq3t
    @user-wk9nn4hq3t Před měsícem

    Ошибка, чаще apache чем nginx)

  • @net6797
    @net6797 Před měsícem

    Для тех у кого возникла ошибка на 32 минуте видео
    pydantic_core._pydantic_core.ValidationError: 1 validation error for STask
    Input should be a valid dictionary or instance of STask [type=model_type, input_value=, input_type=TasksOrm]
    Необходимо объект TasckOrm конвертирвать в словарь с помощью метода .__dict__
    task_schemas = [STask.model_validate(task_model.__dict__) for task_model in task_models]

    • @artemshumeiko
      @artemshumeiko  Před měsícem

      спасибо, что помогаете другим!
      на 48:25 решается эта проблема :D

    • @balbesina228
      @balbesina228 Před 24 dny

      Спасибо, человечище)

  • @foxik_cs5845
    @foxik_cs5845 Před 2 měsíci

    А чем отличается этот курс от курса платного?

    • @artemshumeiko
      @artemshumeiko  Před 2 měsíci +1

      Здесь мы рассмотрели примерно одну сотую от курса.
      В курсе подробно разбираются темы работы с БД, авторизацией, кэшированием, асинхронными задачами, логированием, тестированием, мониторингом.
      Полную программу курса можно посмотреть здесь: artemshumeiko.ru/#rec685694893

  • @naismith3529
    @naismith3529 Před 2 měsíci

    Slim?? Хм

  • @sergeiostrovskiy3828
    @sergeiostrovskiy3828 Před 2 měsíci

    Посмотрел на 2х
    Куда подавать резюме ?

  • @slmpnv
    @slmpnv Před měsícem

    Ну это для каких-то слишком начинающих. Не думаю, что людям, не знающим что делают requirements.txt, надо уметь пользоваться fastAPI

  • @vasiliusmasalskis7732
    @vasiliusmasalskis7732 Před 2 měsíci +3

    ни хрена не понятно!

  • @GunaevVO
    @GunaevVO Před 2 měsíci

    Annotated Depends() Чёт не работае.

  • @DanilMustafin
    @DanilMustafin Před 2 měsíci

    Ты самый пиздатый

  • @zRangelz
    @zRangelz Před 19 dny

    вот что тут бесит это автоимпорты которые даже не показываются....