【问题标题】:Passing image to python FastAPI api endpoint将图像传递给 python FastAPI api 端点
【发布时间】:2021-09-18 01:40:45
【问题描述】:

我对 apis 很陌生,但遇到了问题。我想用它来传递图像并处理它。我认为将其更改为 base64 会有所帮助,我只需将字符串传递给端点。但问题是,在 base64 字符串中,有 '/' 符号会破坏我的网址。有什么想法可以解决它或有什么更好的想法吗?

代码很简单:

app = FastAPI()


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

get_model_predictions 只是处理图像并返回它必须返回的内容

【问题讨论】:

    标签: python api fastapi


    【解决方案1】:

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

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

    这里是快速 API 发布请求的文档:post requestanswer how to post an image using Fast API

    【讨论】:

      【解决方案2】:

      您可以使用 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 解决方案,因为您说您想“传递”图像,所以这是通过 POST 路由而不是 GET 完成的

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

      【讨论】:

        猜你喜欢
        • 2022-12-31
        • 2015-02-03
        • 1970-01-01
        • 2019-11-23
        • 2022-12-31
        • 2020-07-02
        • 1970-01-01
        • 2021-08-11
        • 2022-11-07
        相关资源
        最近更新 更多