Использование RequestParser из Flask для проверки того, что аргументы с плавающей запятой попадают в диапазон
Я создаю API, используя Flask Restplus на Python, который принимает словарь информации о местоположении (например, {lat: 10, lon:80}), выполняет математическое моделирование и выводит результат. В настоящее время я использую объект RequestParser для анализа аргументов. Мне нужно выполнить некоторую обработку ошибок в координатах, чтобы убедиться, что мой API может возвращать правильные ошибки (например, когда указанные широта или долгота выходят за пределы допустимого диапазона). Следовательно, мне нужно выполнить некоторые проверки проанализированных аргументов.
Я мог бы запустить несколько функций if-else для проверки каждого проанализированного аргумента в моем объекте API, но это кажется многословным. Мне было интересно, есть ли более чистый способ сделать это с помощью объекта RequestParser? Если не объект RequestParser, существует ли другой пакет (совместимый с Flask Restplus), который я мог бы использовать для анализа входных данных с плавающей запятой?
1 ответ
Вы можете определить свою собственную функцию проверки и передать ее 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))