[英]How to return Pydantic model using Field aliases instead of names in FastAPI?
[英]How to allow List as query params instead of requestbody in pydantic model for fastapi
所以我有一个简单的 fastapi model 如下:
from typing import List
from fastapi import Query, Depends, FastAPI
from pydantic import BaseModel
class QueryParams(BaseModel):
req1: float = Query(...)
opt1: int = Query(None)
req_list: List[str] = Query(...)
app = FastAPI()
@app.post("/test", response_model=QueryParams)
def foo(q: QueryParams = Depends()):
return q
使用以下命令: curl -X "POST" "http://localhost:8000/test?req1=1" -d '{["foo"]}'
但是:我需要它额外允许uri请求中的参数,例如: curl -X "POST" "http://localhost:8000/test?req1=1&req_list=foo"
我知道如果我从 BaseModel 中取出req_list
,并将其推入 function header 中
from typing import List
from fastapi import Query, Depends, FastAPI
from pydantic import BaseModel
class QueryParams(BaseModel):
req1: float = Query(...)
opt1: int = Query(None)
app = FastAPI()
@app.post("/test", response_model=QueryParams)
def foo(q: QueryParams = Depends(), req_list: List[str] = Query(...)):
return q
它会起作用,但有什么方法可以将它保存在基本模型中?
好吧,我想通了:
from typing import List
from fastapi import Query, Depends, FastAPI
from pydantic.dataclasses import dataclass
@dataclass
class QueryParams:
req1: float = Query(...)
opt1: int = Query(None)
req_list: List[str] = Query(...)
app = FastAPI()
@app.post("/test", response_model=QueryParams)
def foo(q: QueryParams = Depends()):
return q
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.