Перейти к содержанию

История, проектирование и будущее

🌐 Перевод выполнен с помощью ИИ и людей

Этот перевод был сделан ИИ под руководством людей. 🤝

В нем могут быть ошибки из-за неправильного понимания оригинального смысла или неестественности и т. д. 🤖

Вы можете улучшить этот перевод, помогая нам лучше направлять ИИ LLM.

Английская версия

Некоторое время назад один пользователь FastAPI спросил:

Какова история этого проекта? Кажется, что он из ниоткуда стал потрясающим за несколько недель [...]

Вот небольшая часть этой истории.

Альтернативы

Я несколько лет создавал API со сложными требованиями (Машинное обучение, распределённые системы, асинхронные задачи, базы данных NoSQL и т.д.), возглавляя несколько команд разработчиков.

В рамках этой работы мне нужно было исследовать, тестировать и использовать многие альтернативы.

Во многом история FastAPI — это история его предшественников.

Как написано в разделе Альтернативы:

FastAPI не существовал бы, если бы не предыдущая работа других людей.

Ещё до него было создано много инструментов, которые помогли вдохновить его создание.

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

Но в какой-то момент не осталось другого выбора, кроме как создать что-то, что предоставляло бы все эти возможности сразу, взяв лучшие идеи из предыдущих инструментов и объединив их наилучшим возможным образом, используя возможности языка, которые раньше были недоступны (аннотации типов Python 3.6+).

Исследования

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

Например, было ясно, что в идеале всё должно основываться на стандартных аннотациях типов Python.

Также наилучшим подходом было использовать уже существующие стандарты.

Итак, ещё до того как начать писать код FastAPI, я потратил несколько месяцев на изучение спецификаций OpenAPI, JSON Schema, OAuth2 и т.п., чтобы понять их взаимосвязи, пересечения и различия.

Проектирование

Затем я потратил некоторое время на проектирование "API" разработчика, который я хотел иметь как пользователь (как разработчик, использующий FastAPI).

Я проверил несколько идей в самых популярных редакторах кода Python: PyCharm, VS Code, редакторах на базе Jedi.

Согласно последнему опросу Python-разработчиков, который охватывает около 80% пользователей.

Это означает, что FastAPI был специально протестирован с редакторами кода, которыми пользуются 80% Python-разработчиков. И поскольку большинство других редакторов кода, как правило, работают аналогичным образом, все его преимущества должны работать практически для всех редакторов кода.

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

И всё это таким образом, чтобы предоставить всем разработчикам наилучший опыт разработки.

Зависимости

Протестировав несколько альтернатив, я решил, что буду использовать Pydantic из-за его преимуществ.

Затем я внес в него вклад, чтобы сделать его полностью совместимым с JSON Schema, поддержать разные способы определения объявлений ограничений и улучшить поддержку редакторов кода (проверки типов, автозавершение) на основе тестов в нескольких редакторах кода.

Во время разработки я также внес вклад в Starlette, другую ключевую зависимость.

Разработка

К тому времени, когда я начал создавать сам FastAPI, большинство деталей уже было на своих местах, дизайн был определён, зависимости и инструменты были готовы, а знания о стандартах и спецификациях были чёткими и свежими.

Будущее

На этом этапе уже ясно, что FastAPI со своими идеями полезен многим людям.

Его выбирают вместо предыдущих альтернатив, потому что он лучше подходит для многих вариантов использования.

Многие разработчики и команды уже полагаются на FastAPI в своих проектах (включая меня и мою команду).

Но всё ещё впереди много улучшений и возможностей.

У FastAPI отличное будущее.

И ваша помощь очень ценится.