FastApi-19-高级用法

简介: FastApi-19-高级用法

自定义响应码


基础


有些时候,我们需要不同的响应码来处理不同的业务需求,此时我们就需要自定义响应码。


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 中常用的响应体类型。


网络异常,图片无法展示
|


针对不同类型的数据,我们需要选择合适的响应体进行响应。

感谢您的阅读,别忘了关注,点赞,评论,转发四连哟!

相关文章
|
5月前
|
Python
Fastapi进阶用法,路径参数,路由分发,查询参数等详解
Fastapi进阶用法,路径参数,路由分发,查询参数等详解
281 1
|
NoSQL Redis 数据库
FastAPI(六十七)实战开发《在线课程学习系统》接口开发--用户登陆接口开发
FastAPI(六十七)实战开发《在线课程学习系统》接口开发--用户登陆接口开发
|
NoSQL 测试技术 Redis
FastAPI(八十四)实战开发《在线课程学习系统》--接口测试(下)
FastAPI(八十四)实战开发《在线课程学习系统》--接口测试(下)
FastAPI(八十四)实战开发《在线课程学习系统》--接口测试(下)
|
存储 测试技术 数据安全/隐私保护
FastAPI(八十三)实战开发《在线课程学习系统》--注册接口单元测试
FastAPI(八十三)实战开发《在线课程学习系统》--注册接口单元测试
FastAPI(八十三)实战开发《在线课程学习系统》--注册接口单元测试
|
测试技术 数据安全/隐私保护
FastAPI(八十四)实战开发《在线课程学习系统》--接口测试(上)
FastAPI(八十四)实战开发《在线课程学习系统》--接口测试(上)
FastAPI(八十二)实战开发《在线课程学习系统》接口开发-- 课程上架下架
FastAPI(八十二)实战开发《在线课程学习系统》接口开发-- 课程上架下架
|
NoSQL Redis 数据库
FastAPI(八十一)实战开发《在线课程学习系统》接口开发-- 推荐课程列表与课程点赞
FastAPI(八十一)实战开发《在线课程学习系统》接口开发-- 推荐课程列表与课程点赞
FastAPI(八十)实战开发《在线课程学习系统》接口开发-- 课程列表
FastAPI(八十)实战开发《在线课程学习系统》接口开发-- 课程列表
FastAPI(七十九)实战开发《在线课程学习系统》接口开发-- 加入课程和退出课程
FastAPI(七十九)实战开发《在线课程学习系统》接口开发-- 加入课程和退出课程
FastAPI(七十八)实战开发《在线课程学习系统》接口开发-- 评论
FastAPI(七十八)实战开发《在线课程学习系统》接口开发-- 评论