方案一
from fastapi import Request, FastAPI
@app.post("/dummypath")
async def get_body(request: Request):
return await request.json()
方案二
from fastapi import FastAPI
from typing import Any, Dict, AnyStr, List, Union
app = FastAPI()
JSONObject = Dict[AnyStr, Any]
JSONArray = List[Any]
JSONStructure = Union[JSONArray, JSONObject]
@app.post("/")
async def root(arbitrary_json: JSONStructure = None):
return {"received_data": arbitrary_json}
看起来比较累,这样看就好些了。依次推断是否为List,如果不是,则用Dict推断。如果两个都不是,那么就使用None做默认值
JSONObject = Dict[AnyStr, Any]
JSONArray = List[Any]
async def root(arbitrary_json: Union[JSONArray, JSONObject] = None):
return {"received_data": arbitrary_json}
实际上,这样更加符合教程
async def root(arbitrary_json: Union[List, Dict] = None):
return {"received_data": arbitrary_json}