0

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

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

4

1 回答 1

0

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

def float_range(min=0, max=255):
    def validate(value):
        if not isinstance(value, float):
            raise ValueError("Invalid literal for float(): {0}".format(s))
        length = len(s)
        if min <= value <= max:
            return s
        raise ValueError(f"Value must be in range [{min}, {max}]")

    return validate

然后您只需在 reqparser 中使用它,例如:

parser.add_argument("lat", type=float_range(0, 90))
于 2020-11-25T13:22:38.050 回答