FastAPI post请求之 路径参数,查询参数


"""
 测试 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}

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM