Sal*_*mbo 1 python swagger swagger-ui openapi fastapi
我想将图像添加到 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)
Run Code Online (Sandbox Code Playgroud)
正如您从代码中看到的,我尝试使用 URL 来执行此操作,而我在 ReDoc 和 Swagger UI 中得到的只是文本形式的 URL,而不是实际图像。另外,我想使用存储在本地驱动器中的图像。
我怎样才能做到这一点?
提前致谢。
Swagger UI 和 ReDoc都使用标准 HTML 标签作为description参数。因此,您可以使用description.
@app.get(path='/',
responses={
200: {'description': '<img src="https://placebear.com/cache/395-205.jpg" alt="bear">',
...
Run Code Online (Sandbox Code Playgroud)
OpenAPI 还支持 markdown 元素(请参阅此处),并将在 Swagger UI/ReDoc 中为您渲染图像。因此,您可以选择使用:
@app.get(path='/',
responses={
200: {'description': '',
...
Run Code Online (Sandbox Code Playgroud)
要使用存储在本地驱动器中的图像,您可以将StaticFiles实例安装到特定路径(比方说/static),以从驱动器中的目录提供静态文件/图像。下面的例子:
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': '',
...
Run Code Online (Sandbox Code Playgroud)
要将图像添加到examples字段中,您可以再次使用该description参数,如下所示。确保通过参数examples而不是example.
@app.get(path='/',
responses={
200: {"description": "OK",
"content": {
"image/jpeg": {
"schema": {
"type": "string",
"format": "binary"
},
"examples": {
"sampleImage": {
"summary": "A sample image",
"description": "",
"value": ""
}
}
}
}
},
404: {"description": "not found"},
422: {'description': 'not found 2'},
},
...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2827 次 |
| 最近记录: |