""" 测试 FastApi的post请求中的数据验证, 使用的是Body 类似于Path,Query ,embed=True 请求体中使用 json key-value """ from fastapi import FastAPI, Body, Request from fastapi.responses import JSONResponse from typing import Optional from fastapi.exceptions import RequestValidationError app = FastAPI() # 创建FastApi对象 # 自定义异常处理 @app.exception_handler(RequestValidationError) # 重写了RequestValidationError的 exception_handler方法 async def post_validation_exception_handler(request: Request, exc: RequestValidationError): """ 自定义异常处理 :param request: Request的实例化对象 :param exc: RequestValidationError的错误堆栈信息 :return: """ print(f'参数不对{request.method},{request.url}') return JSONResponse({'code': 400, 'msg': exc.errors()}) # post请求参数验证 方式一: Body @app.post('/bar') async def test_post_args( post_id: int = Body(1, title='ID'), name: Optional[str] = Body(None, title='姓名', max_length=10, regex='^1'), age: Optional[int] = Body(None, title='年龄', le=96) ): """ post请求中 Body 是用来测试参数的方式之一 :param post_id: 请求参数的ID :param name: 姓名 :param age: 年龄 :return: post_id,name,age """ return {'post_id': post_id, 'name': name, 'age': age}