自定义响应码
基础
有些时候,我们需要不同的响应码来处理不同的业务需求,此时我们就需要自定义响应码。
from fastapi import status from fastapi.responses import JSONResponse app = FastAPI() @app.get("/") async def root(): return JSONResponse(status_code=status.HTTP_300_MULTIPLE_CHOICES,content={"message": "Welcome to Applications APIRouter!"}) 复制代码
网络异常,图片无法展示
|
如上,我们自定义了
300
响应码来处理当前请求。
进阶
FastApi
为我们提供了一种在视图内根据某些条件修改响应码的方法,可以方便开发者灵活的进行响应码的设置。
from fastapi import Response @app.get("/{code}") async def root(code,rep:Response): if code == "200": rep.status_code=200 else: rep.status_code=333 return {"message": "Welcome to Applications APIRouter!"} 复制代码
code=200 时
网络异常,图片无法展示
|
code!=200 时
网络异常,图片无法展示
|
自定义响应体
很多时候,我们需要向前端返回不同类型的响应体,此时我们需要借助 FastApi
为我们提供的各种响应体。
前面,我们已经使用了关于图片的响应体 StreamingResponse
,今天我们继续了解其他类型。
JSONResponse
from fastapi import status from fastapi.responses import JSONResponse app = FastAPI() @app.get("/") async def root(): return JSONResponse(status_code=status.HTTP_300_MULTIPLE_CHOICES,content={"message": "Welcome to Applications APIRouter!"}) 复制代码
网络异常,图片无法展示
|
HTMLResponse
通过 HTMLResponse
,我们可以直接将 HTML
文本直接发送到前端进行渲染,从而实现前后端合一,在小型系统中很有用。大型系统通常采用前后端分离。
from fastapi import status from fastapi.responses import HTMLResponse app = FastAPI() @app.get("/") async def root(): return HTMLResponse(status_code=status.HTTP_300_MULTIPLE_CHOICES,content="<hr><h1>我是HTMLResponse!<h1>") 复制代码
网络异常,图片无法展示
|
FileResponse
对于文件的预览和展示,下载等,我们都可以用这种响应类型。之前我们已经了解过对于图片我们也可以使用 StreamingResponse
这种类型。
from fastapi import status from fastapi.responses import FileResponse app = FastAPI() @app.get("/") async def root(): return FileResponse(status_code=status.HTTP_202_ACCEPTED,path="templates/baidu.png") 复制代码
网络异常,图片无法展示
|
更多类型
通过查看 fastapi.responses
的源码,我们可以知道,FastApi
为我们提供了以下 8
中常用的响应体类型。
网络异常,图片无法展示
|
针对不同类型的数据,我们需要选择合适的响应体进行响应。
感谢您的阅读,别忘了关注,点赞,评论,转发四连哟!