这是我参与8月更文挑战的第19天,活动详情查看:8月更文挑战
自定义响应码
基础
有些时候,我们需要不同的响应码来处理不同的业务需求,此时我们就需要自定义响应码。
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 中常用的响应体类型。
针对不同类型的数据,我们需要选择合适的响应体进行响应。
感谢您的阅读,别忘了关注,点赞,评论,转发四连哟!