Параметр embed
Параметр embed применяется в функциях Path, Query, Body, Header, Cookie, Form и File.
Он принимает булево значение и указывает FastAPI,
что одиночный параметр нужно встроить в тело запроса
как отдельное поле JSON-объекта, а не принимать его
как единственное значение тела целиком.
Чаще всего embed используется вместе с Body,
когда эндпоинт принимает всего один параметр тела,
но его всё равно нужно обернуть в объект.
Синтаксис
param: type = Body(default, embed=True)
Пример
Давайте примем параметр name в теле запроса как обычное значение:
from fastapi import FastAPI, Body
from pydantic import BaseModel
app = FastAPI()
@app.post('/user')
def user(name: str = Body()):
return {'name': name}
В этом случае клиент отправляет голую строку в теле запроса:
"abcde"
Результат выполнения кода:
{"name": "abcde"}
Пример
Давайте включим embed, чтобы FastAPI ожидал JSON-объект с полем name:
from fastapi import FastAPI, Body
app = FastAPI()
@app.post('/user')
def user(name: str = Body(embed=True)):
return {'name': name}
Теперь клиент отправляет JSON-объект с ключом name:
{"name": "abcde"}
Результат выполнения кода:
{"name": "abcde"}
Пример
Давайте используем embed вместе с моделью Pydantic для вложенного поля:
Теперь тело запроса содержит объект item с полями модели:
Результат выполнения кода: