fastAPI获取json

方案一

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}
使用 Hugo 构建
主题 StackJimmy 设计