FastAPI 相当于 Flask 的 request.form,用于不可知的表单

2024-02-26

我尝试从 Flask 迁移到 FastAPI,我想知道是否有类似于 Flask 的东西:

payload = request.form.to_dict(flat=False)
payload = {key:payload[key][0] for key in payload}

对于 FastAPI。

到目前为止,我只发现了一些技巧,您是否仍然必须一一实现函数的所有表单参数:

from pydantic import BaseModel
class FormData(BaseModel):
    alfa: str=Form(...)
    vita: str=Form(...)
async def Home(request: Request, form_data:FormData)

当然,这个示例的可读性比标准表单处理更好:

async def Home(username: str = Form(...), something_else: str = Form(...)):

但由于所有表单字段都必须声明,它仍然受到很大限制。

还有其他更不可知且优雅的方法吗?

提前致谢,如果这是我未能通过谷歌搜索找到的一个微不足道的问题,我深表歉意:)


您可以获得底层starletterequest https://www.starlette.io/requests/并使用其 request.form() 方法。这个需要python 多部分 https://github.com/andrew-d/python-multipart上班:

from fastapi import FastAPI, Request

app = FastAPI()

@app.post("/example")
async def example(request: Request):
    form_data = await request.form()
    return form_data

调用示例:

C:\>curl -X POST "http://localhost:8000/example" -d "hello=there&another=value"
{"hello":"there","another":"value"}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

FastAPI 相当于 Flask 的 request.form,用于不可知的表单 的相关文章

随机推荐