Тёмный

FastAPI - Эндпоинты, Параметры URL и Запроса #2 

Артём Шумейко
Подписаться 29 тыс.
Просмотров 64 тыс.
50% 1

💡 Попробуй онлайн-тренажёр для подготовки к техническому собеседованию: clck.ru/3B5gxT 💡
Предзапись на курс по поиску работы разработчику и техническим навыкам для Middle (FastAPI): forms.gle/Zw7bPnQvTsfekVH47
Забирай роадмап изучения самого востребованного фреймворка на Python - FastAPI здесь: t.me/ArtemShumeikoBot
Репозиторий на Github с кодом из видео: t.me/artemshumeiko/9
Мой телеграм-канал: t.me/artemshumeiko
Телеграм-сообщество: t.me/python_community_rus
Поддержать канал:
Boosty: boosty.to/artemshumeiko
В этом видео мы создадим несколько эндпоинтов и научимся получать данные от пользователей:
0:00 - Вступление
0:35 - Проблематика
1:11 - Параметры пути
3:34 - Плюсы использования аннотаций типов
5:15 - Параметры запроса
10:12 - Комбинированный запрос (параметры пути и запроса)
#fastapi #python #backend #django #flask #docker #sql #celery #разработка #программирование

Опубликовано:

 

27 июн 2024

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 86   
@artemshumeiko
@artemshumeiko Год назад
💡 Попробуй онлайн-тренажёр для подготовки к техническому собеседованию: clck.ru/3B5gwP 💡 Забирай роадмап изучения самого востребованного фреймворка на Python - FastAPI здесь: t.me/ArtemShumeikoBot
@ivanbudaev724
@ivanbudaev724 9 месяцев назад
Очень приятный чел, интересно слушать
@artemshumeiko
@artemshumeiko 9 месяцев назад
Спасибо ;)
@user-hq8je7ei6x
@user-hq8je7ei6x Год назад
Оставлять пользователя без ответа как-то безответственно :)
@apostol_fet
@apostol_fet Год назад
Не новичок в питоне, как для обзора fastapi очень нравится сам курс, кратко, лаконично, понятно. Подача четкая. Спасибо за курс.
@lemegeton9054
@lemegeton9054 Год назад
Мне кажется стало гораздо тише, чем в предыдущем уроке
@artemshumeiko
@artemshumeiko Год назад
вполне возможно, зато в следующих уроках громкость растет :)
@andrewbondaryuk
@andrewbondaryuk Год назад
Вместо filter лучше использовать next, если нужно получить первый элемент. Filter переберёт всю коллекцию. Курс бомба - огромное спасибо.
@user-dh6po1yk9r
@user-dh6po1yk9r Год назад
Случайно наткнулся, годная подача. Молодец Артем!
@alexsur7315
@alexsur7315 Год назад
Спасибо за курс. Просто и понятно. Как раз для первых проб.
@user-yk4qq4nt7o
@user-yk4qq4nt7o 10 месяцев назад
Большое спасибо за урок, полезно и информативно!
@user-dz6et7mf6l
@user-dz6et7mf6l Год назад
Спасибо за уроки, они супер! Джон конечно шокировал, не ожидал)))
@ailegro
@ailegro Год назад
учитывая что работу работать придется на заграницу в основном то это своеобразный потому психологическая подготовка не помешает. а то после на психологов меньше тратиться придаться
@knowledgedose1956
@knowledgedose1956 8 месяцев назад
какой Джон?
@user-de9xw2bi8p
@user-de9xw2bi8p Год назад
Отличная подача материала, спасибо
@mksmvnv
@mksmvnv 6 месяцев назад
Спасибо за такой качественный контент! Продолжай в том же духе, успехов!
@artemshumeiko
@artemshumeiko 6 месяцев назад
спасибо, буду продолжать!
@fedordostoevskiy4209
@fedordostoevskiy4209 Год назад
Я на js пишу, ради fastApi неделю python учил. Для своего чего-то очень 😎 и удобно - как комбайн всё есть. Спасибо за обзор!
@kizik85
@kizik85 Год назад
Спасибо за уроки!!! Продолжай в том же духе!!!
@Cheese_float
@Cheese_float Год назад
Здоровья тебе добрый человек!!!
@adammason482
@adammason482 11 месяцев назад
Спасибо за урок!
@igorb.4917
@igorb.4917 Год назад
Шикарный курс!
@artemshumeiko
@artemshumeiko Год назад
Рад стараться :D
@mediatech5570
@mediatech5570 Год назад
Спасибо, продолжай в том же духе!
@paveltws4406
@paveltws4406 Год назад
Курс отличный, но я бы в примере с обновлением имени пользователя лучше сразу использовал не POST, а PATCH, объяснив разницу между этими методами + PUT
@hugo-onzakorderra8851
@hugo-onzakorderra8851 11 месяцев назад
Поддерживаю. POST для создания, PATCH для частичного обновления.
@twelfth4927
@twelfth4927 3 месяца назад
Ультра-хорош, обещаю посмотреть весь плейлист
@hobie4321
@hobie4321 Месяц назад
super katta rahmat
@andreypopov4916
@andreypopov4916 2 месяца назад
Молодец. Так держать.
@MasterDomai
@MasterDomai Год назад
круть!
@gayratsaidakhmedov5451
@gayratsaidakhmedov5451 2 месяца назад
спасибо
@aivenwhite4611
@aivenwhite4611 Год назад
громкость куда-то пропала
@Lankaster-ky7ym
@Lankaster-ky7ym 4 месяца назад
Спасибо за видео, держи печеньку 🍪.
@user-fo8yv6cf9h
@user-fo8yv6cf9h 5 месяцев назад
Дякую за курс, був би основний курс на udemy, взяла б і його
@kakw436
@kakw436 Месяц назад
Какая же это все сложная тема.. Теперь я понимаю что парсинг был самой легкой частью всего этого.. Но я смогу в этом разобраться, любой ценой
@KatanaCSSML
@KatanaCSSML Год назад
Слишком мало лайков для такой годноты
@artemshumeiko
@artemshumeiko Год назад
спасибо)
@OnlyElf
@OnlyElf Год назад
Спасибо за курс, очень интересно. Вопрос. Вам не кажется, что операция data[offset:][:limit] хоть и выглядит красиво, но будет работать в два раза дольше чем data[offset : offset + limit], т.к. в ходе ее выполнения, в памяти будет создаваться дополнительный список?
@artemshumeiko
@artemshumeiko Год назад
Здравствуйте. Действительно, в моем случае и памяти и времени будет занято больше, чем в вашем варианте. Упор был на красоту записи :)
@almas.bekbayev
@almas.bekbayev Год назад
Можно еще так 🙃: interval = slice(offset, offset + limit) data[interval]
@romanpiarce
@romanpiarce Год назад
@@almas.bekbayev это что даст? в питоне вообще не шарю, но наверно в вашем случае единожды будет высчитан интервал, а в случае как на видео или как у Антона Жукова - при каждой итерации по элементам массива. Так ли это?
@almas.bekbayev
@almas.bekbayev Год назад
@@romanpiarce Это даст удобочитаемость, не более. Результат будет один и тот же. Почитайте про функцию slice в документации по Python.
@romanpiarce
@romanpiarce Год назад
@@almas.bekbayev понял, да не, я пока питон изучать не буду, так, интересно стало про фаст апи и все)
@amadaygood1108
@amadaygood1108 8 месяцев назад
Отличная подача материала, полезно и интересно! что за редактор использует автор? напоминает Android Studio
@artemshumeiko
@artemshumeiko 8 месяцев назад
Visual Studio Code
@user-eo3dp5uj6s
@user-eo3dp5uj6s Год назад
Интересно смотреть, расширяю познания после джанго. Почему для обновления информации о пользователе используется метод POST, а не, скажем PUT или PATCH?
@artemshumeiko
@artemshumeiko Год назад
Мой косяк вы правы
@artemshumeiko
@artemshumeiko Год назад
i.pinimg.com/originals/4a/fa/51/4afa51d06d3e5dcbb659bacd201dc5c1.png
@mytab0r
@mytab0r 7 месяцев назад
ещё бы в микрофоне чуть усиление бы выкрутить. а то если в шумном месте слушать, то прям оч сильно приходится прислушиваться. Проще сделать потише, при необходимости, чем пытаться вслушиваться. В остальном. подача, сама инфа, только респект!
@dm1annem
@dm1annem Год назад
А на рабочем хостинге тоже uvicorn используется, или нужно другой сервер запускать?
@artemshumeiko
@artemshumeiko Год назад
Для проекта с небольшим количеством пользователей и низким rps можно оставить только uvicorn. Если проект среднего размера и находится на одном сервере, Gunicorn + Uvicorn могут работать в связке, задействуя больше CPU, но обеспечивая больший rps. Если используется кубернетес, можно оставить uvicorn на каждом сервере. Больше информации тут: fastapi.tiangolo.com/deployment/docker/#single-container и тут: stackoverflow.com/a/71546833/18406890
@61rc
@61rc Год назад
Ещё бы обработку наладить, а то получив от фильтра Null можно вылететь ничего не отправив пользователю 😂. В целом очень интересно. Спасибо
@user-kf6nl3vb5i
@user-kf6nl3vb5i 7 месяцев назад
Я один погиб с фразы "Оставлять ендпоинт без ответа как-то безответственно"?🤣🤣
@pavelg9855
@pavelg9855 Год назад
Немного позанудствую: не стоит прям так в лоб брать элемент из списка [0], т.к. если запрошенного id нет в базе, приложение упадет с IndexError.
@stirelshka
@stirelshka Год назад
Всемогущие try и except спасут ситуацию😅😅😅
@Kos37376
@Kos37376 6 месяцев назад
12:30 очень удивил момент, что вы используете для изменения объекта метод POST. Понимаю, что так делать можно, но все же это исключение, ведь это ломает принципы REST
@artemshumeiko
@artemshumeiko 6 месяцев назад
Согласен, лучше put/patch
@vaniaa5091
@vaniaa5091 4 месяца назад
Артем, объясните пожалуйста, как аннотация выполняет преобразование к типу?
@artemshumeiko
@artemshumeiko 4 месяца назад
это делается под капотом самим FastAPI перед тем, как начать обрабатывать запрос в обычном Python такой конвертации нет
@vaniaa5091
@vaniaa5091 4 месяца назад
@@artemshumeiko спасибо!
@user-oz3ze5eb3s
@user-oz3ze5eb3s 20 дней назад
похоже на одном голом питоне не оседлать фастапи или не так ?
@egorshliapik2140
@egorshliapik2140 Год назад
Можно объяснить пожалуйста для чего мы в строчке current_user = list(filter(lambda user: user.get("id") == user_id, fake_users2))[0] пишем [0]
@artemshumeiko
@artemshumeiko Год назад
Мы получаем список, так как пишем list(...). Так как предполагается, что все id уникальные, у нас в списке окажется только 1 пользователь. list(...)[0] соответственно вернет этого юзера вместо списка с юзером: []
@CrashReload
@CrashReload Год назад
Звук все тише и тише) думал к концу будет просто молчание
@user-uk2qm3cx4e
@user-uk2qm3cx4e 7 месяцев назад
А почему возвращаем массив с пользователем, а не просто пользователя типа fake_users[user_id]?
@mustafinmp
@mustafinmp 12 дней назад
fake_users[user_id] это совершенно другое действие. В видео идет поиск по списку и проверка, что поле словаря равно некоторому значению user_id (а ведь запрос мог быть, например, по имени), в то время как fake_users[user_id] вернет просто словарь для какого-то пользователя по индексу, который не совпадает с реальным id нужного пользователя
@amalshakov
@amalshakov 22 дня назад
14:29 не досмотрели за Бобом...
@user-mx9pu5fb6v
@user-mx9pu5fb6v Год назад
Возможно, вкусовщина, но я бы получил список пользователей таким образом: [user for user in fake_users2 if user[“id”] == user_id] Если за функцией filter нет очень сильных оптимизаций, то в ней не так много смысла. Ещё нужно помнить о том, что ее необходимо обернуть в list. Но опять таки - вкусовщина. Спасибо за видео!
@flower-py
@flower-py Год назад
Тогда можно вообще через генератор оптимизировать досуха :) current_user = next( (user for user in fake_users_2 if user["id"] == users_id), fake_users_2[0] )
@romanpiarce
@romanpiarce Год назад
@@flower-py если генератор использовать, как это будет выглядеть в памяти?
@Leha_from_Zavod
@Leha_from_Zavod 5 месяцев назад
@@flower-py можете объяснить почему генератор тут более оптимален чем list comprehension?
@Toksi86
@Toksi86 Год назад
Как же бросается во внимание изменение звука. Слушал первое видео, все хорошо, включилось следующее, а там звук в 2 раза тише - не хорошо)
@honsmusic8758
@honsmusic8758 11 месяцев назад
чел хорош но проблемка со звуком ес честно
@zomich
@zomich 8 месяцев назад
очень тихо, не слышно вообще.
@tamirlanmakhov5027
@tamirlanmakhov5027 Год назад
А зачем оборачивать фильтр в list, если можно просто вызвать next() и вернуть, если там что-то есть, иначе - очевидно пусто. То же самое относится и к list compt, можно взять генератор и вызвать next()
@filipfilip4184
@filipfilip4184 11 месяцев назад
А еще безответственно оставлять ролик в таком виде 😁 Стоит поправить звук (поднять уровень).
@user-yi3ev4kp7s
@user-yi3ev4kp7s Месяц назад
Жалко Боба(
@haskelllisp5998
@haskelllisp5998 Год назад
долгое время восхищался Laravel, Symfony, после fastapi понял какое это говно, а php создан только выыводить разметку
@xacho86
@xacho86 Год назад
Необходимо упомянуть, что переменная в роуте должна совпадать с именем переменной в функции ('/users/{user_id}' def get_user(user_id: int):...). Следует возвращать код успешно выполненного пост запроса - 201, а не 200 - это важно
@user-uk2qm3cx4e
@user-uk2qm3cx4e 7 месяцев назад
Оговорка: массив словарей, а не строк
@user-eb3tu4wu5y
@user-eb3tu4wu5y 5 месяцев назад
В Питоне это называется лист, а не массив. Массив, как правило, это коллекция однотипных данных, а лист позволяет хранить данные разных типов
@user-nu3ot7td1j
@user-nu3ot7td1j 2 месяца назад
курс на степике за 100к ? серьезно ?
@artemshumeiko
@artemshumeiko 2 месяца назад
Нет. Актуальные цены здесь: artemshumeiko.ru/
@harrydrago1256
@harrydrago1256 10 месяцев назад
5:40 затянул сопли. Прости
@moze3998
@moze3998 5 месяцев назад
fake_users = [ {"id": 1, "role": "admin", "name": "Bob"}, {"id": 2, "role": "user", "name": "Alice"}, {"id": 3, "role": "moderator", "name": "John"}, {"id": 4, "role": "user", "name": "Sarah"}, {"id": 5, "role": "admin", "name": "David"}, {"id": 6, "role": "user", "name": "Emily"}, {"id": 7, "role": "moderator", "name": "Michael"}, {"id": 8, "role": "admin", "name": "Olivia"}, {"id": 9, "role": "user", "name": "Daniel"}, {"id": 10, "role": "user", "name": "Sophia"} ] Если вдруг кому-нибудь надо.
Далее
Основы и секреты Rest API
5:13
Просмотров 2,5 тыс.
Структура HTTP запроса
8:53
Просмотров 68 тыс.