Python fast api как запустить

Tutorial — User Guide¶

This tutorial shows you how to use FastAPI with most of its features, step by step.

Each section gradually builds on the previous ones, but it’s structured to separate topics, so that you can go directly to any specific one to solve your specific API needs.

It is also built to work as a future reference.

So you can come back and see exactly what you need.

Run the code¶

All the code blocks can be copied and used directly (they are actually tested Python files).

To run any of the examples, copy the code to a file main.py , and start uvicorn with:

$ uvicorn main:app --reload INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit) INFO: Started reloader process [28720] INFO: Started server process [28722] INFO: Waiting for application startup. INFO: Application startup complete. 

It is HIGHLY encouraged that you write or copy the code, edit it and run it locally.

Using it in your editor is what really shows you the benefits of FastAPI, seeing how little code you have to write, all the type checks, autocompletion, etc.

Читайте также:  How to use typescript with react

Install FastAPI¶

The first step is to install FastAPI.

For the tutorial, you might want to install it with all the optional dependencies and features:

$ pip install "fastapi[all]" ---> 100% 

. that also includes uvicorn , that you can use as the server that runs your code.

You can also install it part by part.

This is what you would probably do once you want to deploy your application to production:

Also install uvicorn to work as the server:

pip install "uvicorn[standard]" 

And the same for each of the optional dependencies that you want to use.

Advanced User Guide¶

There is also an Advanced User Guide that you can read later after this Tutorial — User guide.

The Advanced User Guide, builds on this, uses the same concepts, and teaches you some extra features.

But you should first read the Tutorial — User Guide (what you are reading right now).

It’s designed so that you can build a complete application with just the Tutorial — User Guide, and then extend it in different ways, depending on your needs, using some of the additional ideas from the Advanced User Guide.

Источник

Первые шаги¶

Эта строка показывает URL-адрес, по которому приложение доступно на локальной машине.

Проверьте¶

Вы увидите JSON-ответ следующего вида:

Интерактивная документация API¶

Вы увидите автоматически сгенерированную, интерактивную документацию по API (предоставленную Swagger UI):

Swagger UI

Альтернативная документация API¶

Вы увидите альтернативную автоматически сгенерированную документацию (предоставленную ReDoc):

ReDoc

OpenAPI¶

FastAPI генерирует «схему» всего API, используя стандарт OpenAPI.

«Схем໶

«Схема» — это определение или описание чего-либо. Не код, реализующий это, а только абстрактное описание.

API «схем໶

OpenAPI — это спецификация, которая определяет, как описывать схему API.

Определение схемы содержит пути (paths) API, их параметры и т.п.

«Схема» данных¶

Термин «схема» также может относиться к формату или структуре некоторых данных, например, JSON.

Тогда, подразумеваются атрибуты JSON, их типы данных и т.п.

OpenAPI и JSON Schema¶

OpenAPI описывает схему API. Эта схема содержит определения (или «схемы») данных, отправляемых и получаемых API. Для описания структуры данных в JSON используется стандарт JSON Schema.

Рассмотрим openapi.json ¶

Если Вас интересует, как выглядит исходная схема OpenAPI, то FastAPI автоматически генерирует JSON-схему со всеми описаниями API.

Вы увидите примерно такой JSON:

 "openapi": "3.0.2", "info":  "title": "FastAPI", "version": "0.1.0" >, "paths":  "/items/":  "get":  "responses":  "200":  "description": "Successful Response", "content":  "application/json":  . 

Для чего нужен OpenAPI¶

Схема OpenAPI является основой для обеих систем интерактивной документации.

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

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

Рассмотрим поэтапно¶

Шаг 1: импортируйте FastAPI ¶

from fastapi import FastAPI  app = FastAPI() @app.get("/") async def root(): return "message": "Hello World"> 

FastAPI это класс в Python, который предоставляет всю функциональность для API.

FastAPI это класс, который наследуется непосредственно от Starlette .

Вы можете использовать всю функциональность Starlette в FastAPI .

Шаг 2: создайте экземпляр FastAPI ¶

from fastapi import FastAPI app = FastAPI()  @app.get("/") async def root(): return "message": "Hello World"> 

Переменная app является экземпляром класса FastAPI .

Это единая точка входа для создания и взаимодействия с API.

Именно к этой переменной app обращается uvicorn в команде:

$ uvicorn main:app --reload INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit) 

Если создать такое приложение:

from fastapi import FastAPI my_awesome_api = FastAPI()  @my_awesome_api.get("/") async def root(): return "message": "Hello World"> 

И поместить его в main.py , тогда вызов uvicorn будет таким:

$ uvicorn main:my_awesome_api --reload INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit) 

Шаг 3: определите операцию пути (path operation)

Путь (path)¶

«Путь» это часть URL, после первого символа / , следующего за именем домена.

Термин «path» также часто называется «endpoint» или «route».

При создании API, «путь» является основным способом разделения «задач» и «ресурсов».

Операция (operation)¶

«Операция» это один из «методов» HTTP.

По протоколу HTTP можно обращаться к каждому пути, используя один (или несколько) из этих «методов».

При создании API принято использовать конкретные HTTP-методы для выполнения определенных действий.

  • POST : создать данные.
  • GET : прочитать.
  • PUT : изменить (обновить).
  • DELETE : удалить.

В OpenAPI каждый HTTP метод называется «операция«.

Мы также будем придерживаться этого термина.

Определите декоратор операции пути (path operation decorator)

from fastapi import FastAPI app = FastAPI() @app.get("/") async def root(): return "message": "Hello World"> 

Декоратор @app.get(«/») указывает FastAPI, что функция, прямо под ним, отвечает за обработку запросов, поступающих по адресу:

@decorator Дополнительная информация

Синтаксис @something в Python называется «декоратор».

Вы помещаете его над функцией. Как красивую декоративную шляпу (думаю, что оттуда и происходит этот термин).

«Декоратор» принимает функцию ниже и выполняет с ней какое-то действие.

В нашем случае, этот декоратор сообщает FastAPI, что функция ниже соответствует пути / и операции get .

Это и есть «декоратор операции пути«.

Можно также использовать операции:

Вы можете использовать каждую операцию (HTTP-метод) по своему усмотрению.

FastAPI не навязывает определенного значения для каждого метода.

Информация здесь представлена как рекомендация, а не требование.

Например, при использовании GraphQL обычно все действия выполняются только с помощью POST операций.

Шаг 4: определите функцию операции пути

Вот «функция операции пути«:

  • путь: / .
  • операция: get .
  • функция: функция ниже «декоратора» (ниже @app.get(«/») ).
from fastapi import FastAPI app = FastAPI() @app.get("/") async def root():  return "message": "Hello World"> 

Это обычная Python функция.

FastAPI будет вызывать её каждый раз при получении GET запроса к URL » / «.

В данном случае это асинхронная функция.

Вы также можете определить ее как обычную функцию вместо async def :

from fastapi import FastAPI app = FastAPI() @app.get("/") def root():  return "message": "Hello World"> 

Шаг 5: верните результат¶

from fastapi import FastAPI app = FastAPI() @app.get("/") async def root(): return "message": "Hello World"> 

Вы можете вернуть dict , list , отдельные значения str , int и т.д.

Также можно вернуть модели Pydantic (рассмотрим это позже).

Многие объекты и модели будут автоматически преобразованы в JSON (включая ORM). Пробуйте использовать другие объекты, которые предпочтительней для Вас, вероятно, они уже поддерживаются.

Резюме¶

  • Импортируем FastAPI .
  • Создаём экземпляр app .
  • Пишем декоратор операции пути (такой как @app.get(«/») ).
  • Пишем функцию операции пути ( def root(): . ).
  • Запускаем сервер в режиме разработки ( uvicorn main:app —reload ).

Источник

Оцените статью