2.2 HelloWorld на FastAPI
9 из 9 шагов пройдено
11 из 11 баллов  получено

Давайте приступим к написанию самого кода нашего приложения. Создадим файл api.py

И напишем в него новый экземпляр FastAPI следующим образом:

from fastapi import FastAPI

app = FastAPI()

Этот код инициализирует структуру FastAPI. Приложению необходимо создать экземпляр основного класса FastAPI из модуля fastapi и использовать приложение в качестве ссылочной переменной для объекта. Затем этот объект используется позже в качестве декоратора Python @app, который предоставляет нашему приложению некоторые функции, такие как маршруты, промежуточное программное обеспечение, обработчики исключений и операции с путями.

Вы можете заменить имя app предпочитаемым, но допустимым именем переменной Python, например main_app, site или myapp.

Маршрут создается, сначала определяя декоратор для указания типа операции, а затем функцию, содержащую операцию, которая будет выполняться при вызове этого маршрута.

Теперь ваше приложение готово управлять REST API, которые технически являются функциями Python. Но чтобы объявить их как методы службы REST, нам нужно украсить их соответствующим методом HTTP-запроса, предоставляемым декоратором @app. Этот декоратор содержит операции пути get(), post(), delete(), put(), head(), patch(), trace() и options(), которые соответствуют восьми методам HTTP-запроса. И эти операции пути декорируются или аннотируются поверх функций Python, в которых мы хотим обрабатывать запрос и ответ.

В следующем примере мы создадим маршрут "/", который принимает только запросы GET и возвращает приветственное сообщение при посещении:

from fastapi import FastAPI

app = FastAPI()


@app.get("/")
async def welcome() -> dict:
    return {"message": "Hello World"}

Следующим шагом будет запуск нашего приложения с помощью uvicorn. В терминале выполним следующую команду:

uvicorn api:app --port 8000 --reload

В предыдущей команде, uvicorn принимает следующие аргументы:

file:instance: Файл, содержащий экземпляр FastAPI и переменную имени экземпляра FastAPI. Например, если у нас будет файл main.py и экземпляр основного класса my_app = FastAPI(), то и вызывать ее мы будем как uvicorn main:my_app

--port: Порт, на котором будет обслуживаться приложение.

--reload: Необязательный аргумент, включенный для перезапуска приложения при каждом изменении файла. Данную опцию можно использовать лишь только при локальной разработке.

Эта команда вернет нам следующий вывод:

(.venv) permin0ff@Mac hello_word % uvicorn api:app --port 8000 --reload
INFO:     Will watch for changes in these directories: ['/Users/permin0ff/PycharmProjects/FastAPI_beginners/hello_word']
INFO:     Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
INFO:     Started reloader process [47970] using WatchFiles
INFO:     Started server process [47972]
INFO:     Waiting for application startup.
INFO:     Application startup complete.

Вывод выше, показывает, что uvicorn использует адрес http://127.0.0.1 для запуска приложения с портом по умолчанию 8000. Мы можем получить доступ к нашей странице через http://127.0.0.1:8000. А для того, чтобы остановить сервер, вам просто нужно нажать клавиши клавиатуры Ctrl+C.

Теперь мы можем перейти по адресу http://127.0.0.1:8000 и посмотреть наше запущенное приложение:

Этот раздел подготовил основу для нашего путешествия по изучению того, как создавать API с помощью фреймворка FastAPI. В следующих разделах мы подробно обсудим элементы приложения FastAPI, такие, как маршруты, декораторы и представления.


Будьте вежливы и соблюдайте наши принципы сообщества. Пожалуйста, не оставляйте решения и подсказки в комментариях, для этого есть отдельный форум.

Здравствуйте.

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

Откройте блок для ознакомления в котором будет видно ваш подход к подачи материала, а не перевод документации или дополните этот.

Изменен Kvezac

@Kvezac, Здравствуйте. Открыл еще один раздел - https://stepik.org/lesson/1243272/step/1?unit=1257073

Спасибо. Хорошая тема для изучения. Добавил в очередь на прохождение. Курс закончен? Если нет когда планируется завершить?
Изменен Kvezac

@Kvezac, 6,7,8 раздел пока закрыт, планируем открыть к июню. На данный момент пытаемся реализовать задачи по FastAPI в этом курсе.