将图像传递到 python FastAPI api 端点

Passing image to python FastAPI api endpoint

我是 api 的新手,我有一个问题。我想用它来传递图像并进行处理。我认为只是将它更改为 base64 会有所帮助,我只会将一个字符串传递给端点。但问题是在 base64 字符串中有 '/' 符号破坏了我的 url。我有什么办法可以解决这个问题,或者有更好的想法吗?

代码很简单:

app = FastAPI()


@app.get("/get_predictions/{base64_str}")
def get_predictions(base64_str: str):
    return get_model_predictions(base64_str)

get_model_predictions 只处理图像和 return 它必须 return

使用 get 请求进行文件传输是个坏主意。首先你会有一个巨大的url,其次你在get请求中传递的信息可能会暴露给其他人

正确的解决方案是使用post请求,这将隐藏请求正文中的所有信息。在那里,您不仅可以使用 base_64 传输图像,还可以使用 multipart-formdata.

这是快速 API post 请求的文档:post request or

您可以使用 UploadFile 将文件传递到您的端点。

这是一个例子:

from fastapi import FastAPI, File, UploadFile

@app.post("/uploadfile/")
async def create_upload_file(file: UploadFile = File(...)):
    return {"filename": file.filename}

请注意,在我的示例中,我使用了 POST 方法而不是 GET。 我允许自己为您提供 POST 的解决方案,因为您说您想要 'pass' 图像,所以这是通过 POST 路由而不是 GET

完成的

您可以通过查看文档的这一部分了解更多信息: https://fastapi.tiangolo.com/tutorial/request-files/