使用Flask中的RequestParser来验证float参数是否在范围内

问题描述

我正在Python上使用Flask Restplus创建一个API,该API接收位置信息字典(例如,{lat:10,lon:80}),进行一些数学建模并输出结果。我目前正在使用RequestParser对象来解析参数。我需要在坐标上运行一些错误处理,以确保我的API可以返回正确的错误(例如,当提供的纬度或经度超出范围时)。因此,我需要对解析后的参数进行一些验证。

我可以运行一些if-else函数来检查API对象中每个已解析的参数,但这似乎有些罗word。我想知道是否有使用RequestParser对象的更干净的方法?如果不是RequestParser对象,是否还有另一个可用于解析我的float输入的软件包(与Flask Restplus兼容)?

解决方法

您可以定义自己的验证函数并将其传递给reqparser:

rsync

然后就可以在reqparser中使用它了,

df = pd.DataFrame({
        'date':['2010-01-01'] * 6,'year':[2004,2005,2004,2004],'month':[7] * 6,'a':[1,3,5,7,1,0],'b':[3,8],'weight':[5,6,9,2,4],'col':list('aaabbb')
})

def f(x):
    x['c'] = (x['a']*x['weight']).sum() /(x['b']*x['weight']).sum()
    return x

df = df.groupby(['date','year','month']).apply(f)
print (df)
         date  year  month  a  b  weight col         c
0  2010-01-01  2004      7  1  3       5   a  0.393258
1  2010-01-01  2005      7  3  5       3   a  3.083333
2  2010-01-01  2004      7  5  7       6   a  0.393258
3  2010-01-01  2005      7  7  1       9   b  3.083333
4  2010-01-01  2005      7  1  0       2   b  3.083333
5  2010-01-01  2004      7  0  8       4   b  0.393258