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 ...
随机推荐
- Oracle体系结构二
- 【Sass/SCSS 完整自学中文版教程02】SCSS 官方英文文档翻译整理
Sass 调试 目录 Sass 调试 @error @warn @debug 如果对本文有任何问题,建议,或者在前端技术体系方面有任何问题,可以添加我的微信: drylint , 我会尽可能为你解答, ...
- 洛谷P1603——斯诺登的密码(字符串处理)
https://www.luogu.org/problem/show?pid=1603#sub 题目描述 2013年X月X日,俄罗斯办理了斯诺登的护照,于是他混迹于一架开往委内瑞拉的飞机.但是,这件事 ...
- PHP网上商城
页面展示: 代码参考:Php实现简易购物商城系统 - 邵文 - 博客园 (cnblogs.com)
- Percolator模型及其在TiKV中的实现
一.背景 Percolator是Google在2010年发表的论文<Large-scale Incremental Processing Using Distributed Transactio ...
- 【PHP数据结构】线性查找与二分查找
欢迎来到查找的世界,在学习完各种数据结构之后,总算走到了这一步,不知道大家有什么感想呢?反正我是边学边忘,现在让我去说说图的那几个算法还是在蒙圈的状态中.不过学习嘛,就是一步一步的来,暂时搞不懂的东西 ...
- FastAPI logger日志记录方案 loguru模块
实现方式: 采用 loguru 模块.跟flask直接挂载到app上有区别,当然也可以尝试去这样做. 但是 好像没有这个必要.要的就是个快速.整那些子虚乌有的东西完全木有意义. 1.首先是去项目git ...
- YbtOJ#643-机器决斗【贪心,李超树】
正题 题目链接:https://www.ybtoj.com.cn/problem/643 题目大意 \(n\)个机器人,第\(i\)个攻击力为\(A_i\),防御为\(D_i\). 然后你每次可以对一 ...
- SDA 课程
课件总览 Slide1:Data Science & Digital Society Slide2:DEDA Digital Economy & Decision Analytics ...
- mysql从零开始之MySQL DELETE 语句
MySQL DELETE 语句 你可以使用 SQL 的 DELETE FROM 命令来删除 MySQL 数据表中的记录. 你可以在 mysql> 命令提示符或 PHP 脚本中执行该命令. 语法 ...