Pydantic - 验证不会发生
Pydantic - Validation Does not Happen
我对使用 Pydantic 还很陌生。
我现在面临的问题是,当值超出范围时,下面的模型没有引发预期异常。
例如,如果您将 -1 传递给此模型,它应该理想地引发 HTTPException。但什么也没发生
我不确定我可能哪里出错了。
任何建议都很好。
class GetInput:
"""
for the fields endpoint
"""
def __init__(self,
rank: Optional[int] = None,
interval: Optional[int] = None):
self.rank = rank
self.interval = interval
@validator('rank')
def check_if_rank_in_range(cls, v):
"""
check if input rank is within range
"""
if not 0 < v < 1000001:
raise HTTPException(
status_code=400, detail="Rank Value Must be within range (0,1000000)")
return v
@validator('interval')
def check_if_interval_in_range(cls, v):
"""
check if input rank is within range
"""
if not 0 < v < 1000001:
raise HTTPException(
status_code=400, detail="Interval Value Must be within range (0,1000000)")
return v
FastAPI 端点
@router.get('fields/',status_code=200)
def get_data(params: GetInput = Depends()):
if params.rank:
result = get_info_by_rank(params.rank)
elif params.interval:
result = get_info_by_interval(params.interval)
return result
class GetInput(BaseModel):
rank: Optional[int]=None
interval: Optional[int]=None
@validator("*")
def check_range(cls, v):
if v:
if not 0 < v < 1000001:
raise HTTPException(status_code=400, detail="Value Must be within range (0,1000000)")
return v
- 由于未继承 BaseModel,验证器无法正常工作 Class
- 当 BaseModel Class 被继承时,如果任何一个值是空的,它会抛出一个错误,因此附加的 if 语句。
我对使用 Pydantic 还很陌生。
我现在面临的问题是,当值超出范围时,下面的模型没有引发预期异常。
例如,如果您将 -1 传递给此模型,它应该理想地引发 HTTPException。但什么也没发生
我不确定我可能哪里出错了。
任何建议都很好。
class GetInput:
"""
for the fields endpoint
"""
def __init__(self,
rank: Optional[int] = None,
interval: Optional[int] = None):
self.rank = rank
self.interval = interval
@validator('rank')
def check_if_rank_in_range(cls, v):
"""
check if input rank is within range
"""
if not 0 < v < 1000001:
raise HTTPException(
status_code=400, detail="Rank Value Must be within range (0,1000000)")
return v
@validator('interval')
def check_if_interval_in_range(cls, v):
"""
check if input rank is within range
"""
if not 0 < v < 1000001:
raise HTTPException(
status_code=400, detail="Interval Value Must be within range (0,1000000)")
return v
FastAPI 端点
@router.get('fields/',status_code=200)
def get_data(params: GetInput = Depends()):
if params.rank:
result = get_info_by_rank(params.rank)
elif params.interval:
result = get_info_by_interval(params.interval)
return result
class GetInput(BaseModel):
rank: Optional[int]=None
interval: Optional[int]=None
@validator("*")
def check_range(cls, v):
if v:
if not 0 < v < 1000001:
raise HTTPException(status_code=400, detail="Value Must be within range (0,1000000)")
return v
- 由于未继承 BaseModel,验证器无法正常工作 Class
- 当 BaseModel Class 被继承时,如果任何一个值是空的,它会抛出一个错误,因此附加的 if 语句。