HTTP PUT 请求的主体是一个 JSON 列表 - 像这样:
[item1, item2, item3, ...]
我无法改变这一点。(如果根是 JSON 对象而不是列表,则没有问题。)
使用 FastAPI 我似乎无法以正常方式访问此内容:
@router.put('/data')
def set_data(data: DataModel): # This doesn't work; how do I even declare DataModel?
我找到了以下解决方法,这似乎是一个非常丑陋的 hack:
class DataModel(BaseModel):
__root__: List[str]
from fastAPI import Request
@router.put('/data')
async def set_data(request: Request): # Get the request object directly
data = DataModel(__root__=await request.json())
这肯定不是实现这一目标的“批准”方式。我已经浏览了 FastAPI 和 pydantic 的文档。我错过了什么?