Estoy trabajando en este ejemplo simple de fastapi, me gustaría reemplazar los argumentos read_books con un TypedDict equivalente, como la línea comentada. ¿Es posible?
from fastapi import FastAPI, Query from typing import Optional, TypedDict # would like to define model for query parameter in separeted object class GetModel(TypedDict): test: Optional[str] query_param = GetModel(test=Query('default value', max_length=10, title='titulo', description="description 123", regex="^[az]+")) app = FastAPI() @app.get("/books") def read_books(test: Optional[str] = Query('default value', max_length=10, title='titulo', description="description 123", regex="^[az]+")): #def read_books(query_param): """ comentario do endpoint """ results = {"books": [{"book_name": "The Great Hunt"}, {"book_name": "The Dragon Reborn"}]} if test: results.update({"test": {"name":test}}) return resultsLa forma de hacer esto es implementar el análisis de parámetros de consulta en una dependencia de clase separada, como se describe en la documentación (también, eche un vistazo a esta discusión ). Ejemplo a continuación:
from fastapi import FastAPI, Query, Depends from typing import Optional app = FastAPI() class MyModel: def __init__( self, test: Optional[str] = Query('default value', max_length=10, title='titulo', description="description 123", regex="^[az]+") ): self.test = test @app.get("/books") def read_books(m: MyModel = Depends(MyModel)): results = {"books": [{"book_name": "The Great Hunt"}, {"book_name": "The Dragon Reborn"}]} if m.test: results.update({"test": {"name": m.test}}) return results