FastAPI 学习之路(五十九)封装统一的json返回处理工具
这之前的接口,我们返回的格式都是每个接口异常返回的数据格式都会不一样,我们处理起来没有那么方便,我们可以封装一个统一的json处理。
那么我们看下如何来实现呢
from fastapi import status
from fastapi.responses import JSONResponse, Response
from typing import Union
def resp_200(*, data: Union[list, dict, str]) -> Response:
return JSONResponse(
status_code=status.HTTP_200_OK,
content={
'code': 200,
'message': "Success",
'data': data,
}
)
def resp_400(*, data: str = None, message: str="BAD REQUEST") -> Response:
return JSONResponse(
status_code=status.HTTP_400_BAD_REQUEST,
content={
'code': 400,
'message': message,
'data': data,
}
)
我们统一的把代码放到common下面的jsontools.py里面,我们在接口返回的时候调用。看下我们处理后的效果。
我们在创建的用户的时候修改下,用我们的工具统一的处理下
# 新建用户
@usersRouter.post("/users/", tags=["users"])
def create_user(user: UserCreate, db: Session = Depends(get_db)):
"""
- **email**: 用户的邮箱
- **password**: 用户密码
"""
db_crest = get_user_emai(db, user.email)
user.password = get_password_hash(user.password)
if not db_crest:
user=db_create_user(db=db, user=user)
return resp_200(data={'user':user.email})
return resp_200(data={'detail':"账号不能重复"})
我们看下postman的返回

我们看创建重复的返回

但是我们看着返回的code都是固定的,那么我们是否可以升级改造下。
def reponse(*, code=200,data: Union[list, dict, str],message="Success") -> Response:
return JSONResponse(
status_code=status.HTTP_200_OK,
content={
'code': code,
'message': message,
'data': data,
}
)
新改造后,我们的返回,可以自定义code ,message和data。那么我们去改造下我们创建的用户的接口
# 新建用户
@usersRouter.post("/users/", tags=["users"])
def create_user(user: UserCreate, db: Session = Depends(get_db)):
"""
- **email**: 用户的邮箱
- **password**: 用户密码
"""
db_crest = get_user_emai(db, user.email)
user.password = get_password_hash(user.password)
if not db_crest:
user=db_create_user(db=db, user=user)
return reponse(code=0,data={'user':user.email},message="success")
return reponse(data={'msg':"账号不能重复"},code=1,message="error")
我们看下修改后的用户返回


这样我们就完成了统一的接口响应的处理,后续我们可以在所有的接口中使用。
代码存储https://gitee.com/liwanlei/fastapistuday
文章首发在公众号,欢迎关注。

FastAPI 学习之路(五十九)封装统一的json返回处理工具的更多相关文章
- FastAPI 学习之路(十九)处理错误
系列文章: FastAPI 学习之路(一)fastapi--高性能web开发框架 FastAPI 学习之路(二) FastAPI 学习之路(三) FastAPI 学习之路(四) FastAPI 学习之 ...
- FastAPI 学习之路(十五)响应状态码
系列文章: FastAPI 学习之路(一)fastapi--高性能web开发框架 FastAPI 学习之路(二) FastAPI 学习之路(三) FastAPI 学习之路(四) FastAPI 学习之 ...
- FastAPI 学习之路(十二)接口几个额外信息和额外数据类型
系列文章: FastAPI 学习之路(一)fastapi--高性能web开发框架 FastAPI 学习之路(二) FastAPI 学习之路(三) FastAPI 学习之路(四) FastAPI 学习之 ...
- FastAPI 学习之路(十四)响应模型
系列文章: FastAPI 学习之路(一)fastapi--高性能web开发框架 FastAPI 学习之路(二) FastAPI 学习之路(三) FastAPI 学习之路(四) FastAPI 学习之 ...
- FastAPI 学习之路(十六)Form表单
系列文章: FastAPI 学习之路(一)fastapi--高性能web开发框架 FastAPI 学习之路(二) FastAPI 学习之路(三) FastAPI 学习之路(四) FastAPI 学习之 ...
- FastAPI 学习之路(十八)表单与文件
系列文章: FastAPI 学习之路(一)fastapi--高性能web开发框架 FastAPI 学习之路(二) FastAPI 学习之路(三) FastAPI 学习之路(四) FastAPI 学习之 ...
- FastAPI 学习之路(十)请求体的字段
系列文章: FastAPI 学习之路(一)fastapi--高性能web开发框架 FastAPI 学习之路(二) FastAPI 学习之路(三) FastAPI 学习之路(四) FastAPI 学习之 ...
- 学习之路三十九:新手学习 - Windows API
来到了新公司,一开始就要做个程序去获取另外一个程序里的数据,哇,挑战性很大. 经过两周的学习,终于搞定,主要还是对Windows API有了更多的了解. 文中所有的消息常量,API,结构体都整理出来了 ...
- Kubernetes学习之路(十九)之Kubernetes dashboard认证访问
Dashboard:https://github.com/kubernetes/dashboard 一.Dashboard部署 由于需要用到k8s.gcr.io/kubernetes-dashboar ...
随机推荐
- 创建 Spring容器的三种方式
一.src路径下打包完在war包的classes层级下 1.Spring容器创建的三种方式 创建Bean容器之后创建对象: 其中第三种使用的是BeanFactory对象 2.spring通过配置文件用 ...
- Jetpack Compose学习(4)——Image(图片)使用及Coil图片异步加载库使用
原文地址 Jetpack Compose学习(4)--Image(图片)使用及Coil图片异步加载库使用 | Stars-One的杂货小窝 本篇讲解下关于Image的使用及使用Coil开源库异步加载网 ...
- (未完)Java集合框架梳理(基于JDK1.8)
Java集合类主要由两个接口Collection和Map派生出来的,Collection派生出了三个子接口:List.Set.Queue(Java5新增的队列),因此Java集合大致也可分成List. ...
- eclipse安装配置
安装eclipse,并运行了第一个Hello World!
- PHP网上商城
页面展示: 代码参考:Php实现简易购物商城系统 - 邵文 - 博客园 (cnblogs.com)
- Windows 11抢先体验
SHA1值: 3B6DA9194BA303AC7DBBF2E521716C809500919C 谷歌云:https://drive.google.com/file/d/1sH0cBI9hwh8EdlV ...
- python面向对象(封装,继承,多态)
python面向对象(封装,继承,多态) 学习完本篇,你将会深入掌握 如何封装一个优雅的借口 python是如何实现继承 python的多态 封装 含义: 1.把对象的属性和方法结合成一个独立的单位, ...
- 有备无患「GitHub 热点速览 v.21.38」
作者:HelloGitHub-小鱼干 数据库最重要的一个功能是容灾备份,备份不只是对数据库重要,对日常工作生活的我们一样重要,比如花了一个工作日写的代码没有备份(虽然可能只有 1 行-)总归是一个让人 ...
- Java基础系列(31)- 可变参数
可变参数 JDK1.5开始,Java支持传递同类型的可变参数给一个方法 在方法声明中,在指定参数类型后加一个省略号(...) 一个方法中只能指定一个可变参数,它必须是方法的最后一个参数.任何普通的参数 ...
- mysql 复合索引 为什么遵循最左原则
1,>mysql :多列索引 https://dev.mysql.com/doc/refman/5.7/en/multiple-column-indexes.html 1>,B+树: h ...