Using Pydantic's Field, you can add validations to the request payload. Let’s see it with an example.
Example
class Employee(BaseModel):
name: str = Field(
...,
title="Employee name",
min_length = 3,
max_length=30
)
age : int = Field(...,
gt = 18,
title="Employee age"
)
In the above snippet, I added constraints to the fields ‘name’ and ‘age’. ‘name’
requestBodyValidations.py
from fastapi import FastAPI, Body
from pydantic import BaseModel, Field
from typing import Optional
app = FastAPI()
# employees information
emps = {
1 : {
"name" : "Krishna",
"age": 32
}
}
class Employee(BaseModel):
name: str = Field(
...,
title="Employee name",
min_length = 3,
max_length=30
)
age : int = Field(...,
gt = 18,
title="Employee age"
)
@app.get("/emps")
def allEmployees():
return emps
@app.post("/emps")
def createEmployee(emp: Employee):
noOfEmps = len(emps)
newId = noOfEmps + 1
emps[newId] = dict(emp)
return {
"id" : newId,
"name" : emps[newId]['name'],
"age": emps[newId]['age']
}
Open terminal and execute the command ‘uvicorn requestBodyValidations:app --reload’.
$uvicorn requestBodyValidations:app --reload
INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
INFO: Started reloader process [43421] using statreload
INFO: Started server process [43423]
INFO: Waiting for application startup.
INFO: Application startup complete.
Open the url ‘http://127.0.0.1:8000/docs’ in browser and experiment with swagger documentation.
No comments:
Post a Comment