FastAPI中如何自定义Swagger响应的媒体类型?

FastAPI中如何自定义Swagger响应的媒体类型?

fastapi 设置 swagger response 的 media_type

在使用 fastapi 框架开发 restful api 时,我们需要根据接口的响应内容设置适当的媒体类型(media_type),以便客户端能够正确解析和处理响应。对于返回图像流的接口,需要将 media_type 设置为 "image/jpg" 或相应的图像类型,以告知客户端返回的内容类型。

然而,对于使用默认响应类的接口(如返回 json 的接口),fastapi 会自动在响应头中设置 "content-type",无需显式声明 media_type。

不过,对于返回自定义响应类的接口,我们可以使用 "media_type" 属性来指定响应的媒体类型。例如,以下代码演示了如何设置自定义响应类的媒体类型为 "image/jpeg":

from fastapi import FastAPI
from fastapi.responses import StreamingResponse

app = FastAPI()

class MyCustomResponse(StreamingResponse):
    media_type = "image/jpeg"

@app.get("/img", response_class=MyCustomResponse)
def image():
    def iterfile():
        with open("./image.jpg", mode="rb") as file_like:
            yield from file_like

    return MyCustomResponse(iterfile())

上述代码中,"mycustomresponse" 类继承自 fastapi 提供的 "streamingresponse" 类,并重写了 "media_type" 属性,将其设置为 "image/jpeg"。通过将 "mycustomresponse" 作为 "image" 接口的 "response_class",可以确保返回的图像流响应带有正确的媒体类型。

通过这种方式,我们可以自定义 swagger response 的 media_type,确保客户端能够准确地处理返回的各种响应类型的 api 接口

以上就是FastAPI中如何自定义Swagger响应的媒体类型?的详细内容,更多请关注硕下网其它相关文章!