← Back to Tutorials
13. Request Body
from fastapi import FastAPI
from pydantic import BaseModel
app = FastAPI()
class Item(BaseModel):
name: str
description: str = None
price: float
tax: float = None
# Single body parameter
@app.post("/items/")
def create_item(item: Item):
return {"name": item.name, "price": item.price}
# Body + path + query
@app.put("/items/{item_id}")
def update_item(
item_id: int,
item: Item,
q: str = None
):
return {"item_id": item_id, **item.dict(), "q": q}
Multiple Body Parameters
class User(BaseModel):
username: str
full_name: str = None
@app.put("/items/{item_id}")
def update_item(
item_id: int,
item: Item,
user: User,
importance: int = Body(..., ge=1)
):
return {"item_id": item_id, "item": item, "user": user}
✏️ Exercise: Create a POST endpoint that accepts a User model (username, email, age) as the request body. Return the user data with a welcome message.