当前位置: 首页 > 知识库问答 >
问题:

如何使用 FastAPI 将图像添加到 Swagger UI 自动文档?

陆飞龙
2023-03-14

我想将图像添加到FastAPI自动留档(由Swagger UI提供),但我不知道如何做到这一点。这是代码:

@api.get(path='/carbon-credit/',
    responses={
        200: {'description': 'Ok',
            "content": {
            "image/jpeg": {
                "example": 'https://picsum.photos/seed/picsum/200/300'
                    }
                }},
        404: {"description": "not found"},
        422: {'description': 'not found 2'},
    },
    name='API for Carbon Credit',
    description="get carbon credit",
    tags=['Images'],
    response_class=Response)

正如您从代码中看到的那样,我正在尝试使用 URL 执行此操作,我在 ReDoc 和 Swagger UI 中得到的只是作为文本的 URL,而不是实际图像。另外,我想使用存储在本地驱动器中的图像。

我如何才能做到这一点?

先谢谢你。

共有1个答案

马奇略
2023-03-14

Swagger UI和ReDoc都使用标准的超文本标记语言标记描述参数。因此,您可以使用描述添加图像。

@app.get(path='/',
    responses={
        200: {'description': '<img src="https://placebear.com/cache/395-205.jpg" alt="bear">',
    ...

OpenAPI还支持markdown元素(请参见此处),并将在Swagger UI/ReDoc中为您呈现图像。因此,您也可以使用:

@app.get(path='/',
    responses={
        200: {'description': '![bear](https://placebear.com/cache/395-205.jpg)',
    ...

要使用存储在本地驱动器中的映像,您可以将静态文件实例挂载到特定路径(比方说/静态),以从驱动器中的目录中提供静态文件/映像。下面的示例:

from fastapi import FastAPI
from fastapi.staticfiles import StaticFiles

app = FastAPI()
app.mount("/static", StaticFiles(directory="static"), name="static")

@app.get(path='/',
    responses={
        200: {'description': '![bear](static/bear.jpg)',
    ...

要将图像添加到示例字段,您可以再次使用描述参数,如下所示。确保通过示例参数而不是示例执行此操作

@app.get(path='/',
    responses={
        200: {"description": "OK",
               "content": {
                  "image/jpeg": {
                     "schema": {
                        "type": "string",
                        "format": "binary"
                     },
                     "examples": {
                        "sampleImage": {
                           "summary": "A sample image",
                           "description": "![bear](https://placebear.com/cache/395-205.jpg)",
                           "value": ""
                        }
                     }
                  }
               }
            },
        404: {"description": "not found"},
        422: {'description': 'not found 2'},
    },
    ...
 类似资料:
  • 问题内容: 我有一个基于项目数组创建的。当网格滚动到底部时,我需要添加更多图像,但是我不确定该怎么做。 现在我了解以下内容: 我有一个适配器,可以解析该数组并向该类提供ImageIds,该类将返回 我必须以某种方式更改此数组并让适配器知道它,所以我的问题是,如何获得对该适配器的引用? 这是我的代码: 现在有一些冗余代码,但这是我的测试项目。我所知道的是,适配器的更新必须在何时(即何时到达底部)进行

  • 问题内容: 最近8个小时我一直在阅读文档,但没有发现任何可以帮助我的东西。大概是,但是没有代码在工作,因为它一直说“找不到图像URL”并引发异常。但是我还有其他项目,从来没有这个问题。 因此,有一个类包含这样的月份: 到目前为止,一切都很好。我什至可以在控制台中对其进行测试,并且效果很好,并且可以按值排序。现在,当我尝试从资源中添加图像时,出现了我之前提到的问题:找不到URL。但是,我只能使用图像

  • 我正在使用Python FastAPI编写一些Rest API。需要在Swagger-OpenAPI文档中添加许多自定义部分。这包括每个API的联系信息字段、作者信息、显示数据模型的图像、数据库字段等。 有没有办法使用快速API内置的OpenAPI功能来完成所有这些工作?我知道可以托管我们自己的自定义 json 文件。但是我不知道如何将图像添加到招摇的json文件中。我也不知道如何将自定义字段添加

  • 我正在尝试使用Docx4j库将图像添加到Document(. docx),代码如下。该图像已经存在于本地机器中,最初我教它不支持png,然后我将图像重命名为jpg,但它仍然会引发错误 下面是错误消息。

  • 问题内容: 我有一个JPanel,我想向其中添加即时生成的JPEG和PNG图像。 到目前为止,我在Swing教程中看到的所有示例,特别是在Swing示例中,都使用ImageIcon。 我将这些图像生成为字节数组,它们通常比示例中使用的通用图标大,尺寸为640x480。 使用ImageIcon类在JPanel中显示该大小的图像时是否存在任何(性能或其他)问题? 什么是平常做的呢? 如何不使用Imag

  • 问题内容: 我想将图像文件添加到json对象中。是否可以将图像文件添加到json对象中? 我尝试了下面的代码,但它不起作用?因为我想将json对象发送到服务器,所以服务器将读取我的图像文件并将其存储到该数据库中。 因此,当我打印此json对象时,它仅显示图像存储的图像路径。我想要文件以将其发送到服务器。 问题答案: 您将需要阅读从入,并把该对象到您。 您还应该看看以下帖子: JSON中的ByteA