FastAPI에서 파라미터에 대한 추가적인 검증을 지원한다.
from typing import Union
from fastapi import FastAPI
app = FastAPI()
@app.get("/items/")
async def read_items(q: Union[str, None] = None):
results = {"items": [{"item_id": "Foo"}, {"item_id": "Bar"}]}
if q:
results.update({"q": q})
return results
Import Query
from typing import Union
**from fastapi import FastAPI, Query**
app = FastAPI()
@app.get("/items/")
async def read_items(q: Union[str, None] = Query(default=None, max_length=50)):
results = {"items": [{"item_id": "Foo"}, {"item_id": "Bar"}]}
if q:
results.update({"q": q})
return results
Use Query
as the default value
Query를 default값 넣는 곳에 넣고, 다양한 validation 옵션 등을 줄 수 있다.
max_length
from typing import Union
from fastapi import FastAPI, Query
app = FastAPI()
@app.get("/items/")
**async def read_items(q: Union[str, None] = Query(default=None, max_length=50)):**
results = {"items": [{"item_id": "Foo"}, {"item_id": "Bar"}]}
if q:
results.update({"q": q})
return results
from typing import Union
from fastapi import FastAPI, Query
app = FastAPI()
@app.get("/items/")
async def read_items(
**q: Union[str, None] = Query(default=None, min_length=3, max_length=50)**
):
results = {"items": [{"item_id": "Foo"}, {"item_id": "Bar"}]}
if q:
results.update({"q": q})
return results
^
: starts with the following characters, doesn't have characters before.fixedquery
: has the exact value fixedquery
.$
: ends there, doesn't have any more characters after fixedquery
.from typing import Union
from fastapi import FastAPI, Query
app = FastAPI()
@app.get("/items/")
async def read_items(
q: Union[str, None] = Query(
**default=None, min_length=3, max_length=50, regex="^fixedquery$"**
)
):
results = {"items": [{"item_id": "Foo"}, {"item_id": "Bar"}]}
if q:
results.update({"q": q})
return results
from fastapi import FastAPI, Query
app = FastAPI()
@app.get("/items/")
**async def read_items(q: str = Query(default="fixedquery", min_length=3)):**
results = {"items": [{"item_id": "Foo"}, {"item_id": "Bar"}]}
if q:
results.update({"q": q})
return results
from fastapi import FastAPI, Query
app = FastAPI()
@app.get("/items/")
**async def read_items(q: str = Query(min_length=3)):**
results = {"items": [{"item_id": "Foo"}, {"item_id": "Bar"}]}
if q:
results.update({"q": q})
return results
from fastapi import FastAPI, Query
app = FastAPI()
@app.get("/items/")
**async def read_items(q: str = Query(default=..., min_length=3)):**
results = {"items": [{"item_id": "Foo"}, {"item_id": "Bar"}]}
if q:
results.update({"q": q})
return results
from fastapi import FastAPI, Query
**from pydantic import Required**
app = FastAPI()
@app.get("/items/")
**async def read_items(q: str = Query(default=Required, min_length=3)):**
results = {"items": [{"item_id": "Foo"}, {"item_id": "Bar"}]}
if q:
results.update({"q": q})
return results
from typing import Union
from fastapi import FastAPI, Query
app = FastAPI()
@app.get("/items/")
async def read_items(
q: Union[str, None] = Query(
default=None,
**title="Query string",**
**description="Query string for the items to search in the database that have a good match",**
min_length=3,
)
):
results = {"items": [{"item_id": "Foo"}, {"item_id": "Bar"}]}
if q:
results.update({"q": q})
return results