武进做网站,网络营销网站建设诊断报告,滕州市做网站,什么叫网络架构在本篇文章之前的接口#xff0c;我们每个接口异常返回的数据格式都不一样#xff0c;处理起来也没有那么方便#xff0c;因此我们可以封装一个统一的json。
from fastapi import status
from fastapi.responses import JSONResponse, Response
from typing import Unionde…在本篇文章之前的接口我们每个接口异常返回的数据格式都不一样处理起来也没有那么方便因此我们可以封装一个统一的json。
from fastapi import status
from fastapi.responses import JSONResponse, Response
from typing import Uniondef resp_200(*, data: Union[list, dict, str]) - Response:return JSONResponse(status_codestatus.HTTP_200_OK,content{code: 200,message: success,data: data})def resp_400(*, data: str None, message: strBAD REQUEST) - Response:return JSONResponse(status_codestatus.HTTP_400_BAD_REQUEST,content{code: 400,message: message,data: data})把代码统一放到common下面的json_tools.py里面我们在接口返回的时候调用
from common.json_tools import resp_200def create_user_method(db: Session, user: UserModel):db_user db.query(User).filter(User.email user.email).first()if db_user:return resp_200(data{detail: this user already exists})from routers.users import get_password_hashhashed_password get_password_hash(user.password)init_user User(emailuser.email, hashed_passwordhashed_password)db.add(init_user)db.commit()db.refresh(init_user)return resp_200(data{user: init_user.email})
我们看下处理后的效果 我们看创建重复的返回 但是我们发现code返回的都是固定的那么我们是否可以改造下
def response(*, code: 200, data: Union[list, dict,str], messagesuccess) - Response:return JSONResponse(status_codestatus.HTTP_200_OK,content{code: code,message: message,data: data})
改造后我们的返回消息可以自定义codemessagedata。接下来我们再次改造下我们的新建用户的接口
from common.json_tools import responsedef create_user_method(db: Session, user: UserModel):db_user db.query(User).filter(User.email user.email).first()if db_user:return response(code1, messageerror, datathis user already exists)from routers.users import get_password_hashhashed_password get_password_hash(user.password)init_user User(emailuser.email, hashed_passwordhashed_password)db.add(init_user)db.commit()db.refresh(init_user)return resp_200(data{user: init_user.email})
我们看下修改后的用户返回 这样我们就完成了统一接口响应处理后续我们可以在所有的接口中使用。