最近在学如何使用FastAPI将自己的模型做成api的形式,记录一下自己遇到的问题和解决办法!
1、FastAPI设置上传文件为可选项
在调用api时,会传入一些参数,有些参数需要设置为可选项。
from fastapi import FastAPI, UploadFile, File, Form
from typing import Optional
# 创建 FastAPI 应用实例
app = FastAPI()
# 定义一个 API 端点,用于处理 POST 请求
# 该端点接收一个可选的文件和一个必需的文本字段
@app.post("/load_image_text")
def analyze_entity_relation(
image: Optional[UploadFile] = None, # 可选的上传文件参数,如果没有文件则为 None
text: str = Form(...) # 必需的表单字段,使用 Form 表示必须从表单中获取
):
# 检查是否上传了文件
if not image:
# 如果没有上传文件,返回一个包含消息的 JSON 对象
return {"data": "no image"}
else:
# 如果上传了文件,返回上传文件的文件名
return {"filename": image.filename}