Пользовательский интерфейс FastAPI Swagger показывает псевдоним вместо исходного имени поля в схеме ответаPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Пользовательский интерфейс FastAPI Swagger показывает псевдоним вместо исходного имени поля в схеме ответа

Сообщение Anonymous »

У меня есть следующий код FastAPI, использующий Pydantic:

Код: Выделить всё

from fastapi import FastAPI
from fastapi.routing import APIRouter
from pydantic import BaseModel, Field
from typing import Optional

app = FastAPI()
router = APIRouter()

class UserSchema(BaseModel):
user_name: Optional[str] = Field(None, alias="name")

class Config:
populate_by_name = True

@router.get(
"/user",
tags=["user"],
summary="Get user",
response_model=UserSchema,
response_model_by_alias = False
)
async def get_user():
user_data = {"name": "John Doe"}
return UserSchema(**user_data).model_dump()
Текущее поведение
Ответ API: (верно)

Код: Выделить всё

{
"user_name": "John Doe"
}
Схема ответа пользовательского интерфейса Swagger: (неверно — вместо исходного имени поля отображается псевдоним) Изображение

Код: Выделить всё

{
"name": "string"
}
Ожидаемое поведение
Я хочу, чтобы схема ответа Swagger UI (OpenAPI) отображала имя поля user_name вместо имени псевдонима< /code>.
Что я пробовал
  • Использование by_alias=False при сериализации ответа .

    Код: Выделить всё

    async def get_user():
    user_data = {"name": "John Doe"}
    return UserSchema(**user_data).model_dump(by_alias=False)
    
  • Добавление populate_by_name = True в конфигурации модели Pydantic.
    < /ол>

    Код: Выделить всё

    class UserSchema(BaseModel):
    user_name: Optional[str] = Field(None, alias="name")
    
    class Config:
    populate_by_name = True
    
  • Установка response_model_by_alias = False в маршруте

Код: Выделить всё

@router.get(
"/user",
tags=["user"],
summary="Get user",
response_model=UserSchema,
response_model_by_alias = False
)
Как настроить FastAPI, чтобы пользовательский интерфейс Swagger отображал имя поля (имя_пользователя) вместо псевдонима (имя)?

Подробнее здесь: https://stackoverflow.com/questions/793 ... nse-schema
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»