赞
踩
返回JSON类型的接口会比较多,除了返回JSON格式,还有可以响应其它格式的内容:
使用 HTMLResponse 来从 FastAPI 中直接返回一个 HTML 响应。将 HTMLResponse 作为你的 路径操作 的 response_class 参数传入:
from fastapi import FastAPI from fastapi.responses import HTMLResponse app = FastAPI() @app.get("/users/", response_class=HTMLResponse) async def get_users(): return """ <html> <head> <title>这个是一个HTML网页</title> </head> <body> <h1>这个是一个HTML网页</h1> </body> </html> """
可以接受纯文本类型响应,使用PlainTextResponse,在这个例子中,HTTP 头的 Content-Type 会被设置成 text/plain。
@app.get("/says", response_class=PlainTextResponse)
async def main():
return "Hello World"
除了前面的提到 JSONResponse , 还有另外2个,ORJSONResponse 是一个使用 orjson 的快速的可选 JSON 响应。UJSONResponse 是一个使用 ujson 的可选 JSON 响应。ujjson 必须先安装;在这个例子中,HTTP 头的 Content-Type 会被设置成 application/json。
pip install ujjson
@app.get("/hobby/", response_class=UJSONResponse)
async def get_hobby():
return [{"hobby": "国粹"}]
传输文件作为响应, 与其他响应类型相比,接受不同的参数集进行实例化:
文件响应将包含适当的 Content-Length,Last-Modified 和 ETag 的响应头。
@app.get("/files")
async def get_files():
return FileResponse(path='head_profile.jpg')
采用异步生成器或普通生成器(generator)/迭代器(iterator)流式传输响应数据
file_path = "test.mp4"
@app.get("/videos")
def get_video():
def iterfile():
with open(file_path, "rb") as file_like:
yield from file_like
return StreamingResponse(iterfile(), media_type="video/mp4")
如果有一个类文件对象(例如 open() 返回的对象),可以创建一个生成器函数来迭代该类文件对象
这样,不必首先在内存中读取所有内容,可以将该生成器函数传递给 StreamingResponse,然后返回它,这包括许多与云存储、视频处理等交互的库。
返回 HTTP 重定向。默认情况下使用 307 状态代码(临时重定向)
@app.get("/blog")
async def redirect_blog():
return RedirectResponse("https://blog.csdn.net/lzq599220/article/details/137077376")
FastAPI框架不仅限于返回JSON格式的响应,还支持多种类型的响应以满足不同场景的需求。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。