Метод openapi
Метод openapi применяется к приложению FastAPI
и возвращает словарь с описанием всех маршрутов
в формате OpenAPI. Схема строится автоматически
на основе зарегистрированных обработчиков, моделей Pydantic
и метаданных приложения. Метод не принимает параметров.
Обычно он вызывается автоматически при обращении к адресу
из атрибута openapi_url.
Синтаксис
app.openapi()
Пример
Давайте создадим приложение с одним маршрутом и получим его OpenAPI-схему:
from fastapi import FastAPI
app = FastAPI()
@app.get('/')
def index():
return {'text': 'hello'}
schema = app.openapi()
print(schema['openapi'])
print(list(schema['paths'].keys()))
Результат выполнения кода:
"3.1.0"
['/']
Пример
Давайте посмотрим, как в схеме описывается маршрут с параметром пути и моделью ответа:
from fastapi import FastAPI
from pydantic import BaseModel
app = FastAPI()
class User(BaseModel):
name: str
age: int
@app.get('/user/{name}', response_model=User)
def user(name: str):
return {'name': name, 'age': 25}
schema = app.openapi()
path = schema['paths']['/user/{name}']['get']
print(path['parameters'])
print(path['responses']['200']['content'].keys())
Результат выполнения кода:
[{'name': 'name', 'in': 'path', 'required': True, 'schema': {'type': 'string', 'title': 'Name'}}]
dict_keys(['application/json'])
Пример
Давайте сохраним OpenAPI-схему в JSON-файл для дальнейшего использования:
<+python+>
import json
from fastapi import FastAPI
app = FastAPI(title='My App', version='1.0.0')
@app.get('/')
def index():
return {'text': 'hello'}
schema = app.openapi()
with open('openapi.json', 'w') as f:
json.dump(schema, f, indent=2)
print(schema['info'])
<-python+>
Результат выполнения кода:
{'title': 'My App', 'version': '1.0.0'}
Смотрите также
-
атрибут
openapi_url,
который задаёт адрес для получения OpenAPI-схемы -
атрибут
openapi_schema,
который хранит кэшированную OpenAPI-схему приложения -
класс
FastAPI,
который представляет само приложение FastAPI -
метод
api_route,
который регистрирует маршрут с произвольным HTTP-методом