@domenico
To add custom validation in FastAPI, you can use Pydantic models and write custom validation methods within the model class. Here is an example of how you can add custom validation:
1 2 |
from fastapi import FastAPI, HTTPException from pydantic import BaseModel, validator |
1 2 3 4 5 6 7 8 9 |
class Item(BaseModel): name: str price: float @validator('price') def check_price(cls, value): if value < 0: raise ValueError('Price must be greater than 0') return value |
In the above example, a custom validation method check_price
is defined for the price
field. The method checks if the price is greater than 0 and raises a ValueError
if it is not.
1 2 3 4 5 |
app = FastAPI() @app.post('/items/') async def create_item(item: Item): return {'name': item.name, 'price': item.price} |
In this example, the create_item
endpoint receives a POST request with a JSON payload that conforms to the Item
model. If the custom validation fails, FastAPI will automatically return a 422 Unprocessable Entity response with details of the validation error.
By using Pydantic models and custom validation methods, you can easily add custom validation to your FastAPI application.