You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

FastAPI(含Pydantic)是否支持内置校验查询参数小数位数?

问题解答

目前FastAPI的Query参数本身并没有内置的decimal_places参数来直接限制小数位数,但可以通过Pydantic提供的内置约束类型实现需求,不用写自定义校验器或正则表达式。

具体来说,使用Pydantic的condecimal类型,它支持指定decimal_places参数约束小数位数,同时还能搭配gt这类数值范围校验,完全适配美元金额的校验场景。

修改后的代码示例:

from fastapi import FastAPI, Query
from pydantic import condecimal

app = FastAPI()

@app.post("/send_usd")
async def send_usd(amount: condecimal(gt=0, decimal_places=2) = Query(...)):
    return {"valid_amount": amount}

当传入12.34这类符合两位小数的数值时,请求会正常通过;如果传入12.345(三位小数)或者0及负数,都会触发自动校验失败并返回对应错误信息。

这个方案属于Pydantic内置的校验能力,不需要额外编写自定义逻辑,和你期望的decimal_places=2用法逻辑一致。

内容的提问来源于stack exchange,提问作者mincom

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 02:43:13