【发布时间】:2023-03-19 09:47:01
【问题描述】:
我正在尝试创建一个 FastAPI 端点,用户可以在其中上传 json 格式或 gzip 文件格式的文档。我可以让端点单独/单独地从这两种方法接收数据,但不能在一个端点/函数中一起接收数据。有没有办法让同一个 FastAPI 端点接收 json 或文件?
json 示例:
from fastapi import FastAPI
from pydantic import BaseModel
class Document(BaseModel):
words: str
app = FastAPI()
@app.post("/document/")
async def create_item(document_json: Document):
return document_json
文件示例:
from fastapi import FastAPI, File, UploadFile
from fastapi.middleware.gzip import GZipMiddleware
app = FastAPI()
app.add_middleware(GZipMiddleware)
@app.post("/document/")
async def create_item(document_gzip: UploadFile = File(...)):
return document_gzip
非此即彼的不工作示例:
from typing import Optional
from fastapi import FastAPI, File, UploadFile
from fastapi.middleware.gzip import GZipMiddleware
from pydantic import BaseModel
class Document(BaseModel):
words: Optional[str] = None
app = FastAPI()
app.add_middleware(GZipMiddleware)
@app.post("/document/")
async def create_item(
document_json: Document, document_gzip: Optional[UploadFile] = File(None)
):
return document_json, document_gzip
【问题讨论】: