FastAPI中如何从bytes对象解析form-data并提取metadata字段
FastAPI中如何从bytes对象解析form-data并提取metadata字段
嘿,我来帮你搞定这个问题!你之前直接用Body(...)接收请求体,拿到的是原始的bytes字节流,这肯定没法直接提取form-data里的metadata字段,毕竟bytes对象本身就没有name这类属性,所以才会报AttributeError。
其实FastAPI本身就提供了专门处理multipart/form-data的工具,不用你自己去解析原始字节流。你只需要把接口函数的参数改成用Form和File依赖项来接收对应的字段就行,就像你最后调整的那样:
from fastapi import FastAPI, UploadFile, File, Form from typing import List import json app = FastAPI() @app.post('/myapi') async def getmyapi(metadata: str = Form(...), file: List[UploadFile] = File(...)): print(json.loads(metadata)) # 这里就能直接拿到解析后的字典啦!
这样改了之后,FastAPI会自动帮你解析请求里的form-data内容:把名为metadata的表单字段以字符串形式传给你,文件列表则用UploadFile对象来封装。你只需要用json.loads()把metadata字符串转成Python字典,就能轻松操作里面的内容了。
备注:内容来源于stack exchange,提问作者whitebear
相关产品推荐
相关产品推荐

