python - 性感:如何在 HTTP POST 中验证来自 json 数据的非字符串值

标签 python json http post voluptuous

我正在使用 Flask 实现一些 REST API。在其中一个 API 中,我需要提交一个由经度和纬度定义的位置。所以我很自然地用 httpie 来做这个:

http POST :5000/api/v1.0/foo lng=12.34 lat=56.78

在 flask 端,我使用 voluptuous 来验证 JSON 数据。但是,后端接收到的所有数据都是unicode 类型的。我必须做这样的事情:

try:
  lng = atof(data['lng'])
  schema(data)
except KeyError:
  raise SomeError
except MultipleInvalid:
  raise SomeError

这感觉很笨拙,有点违背了性感的目的。是我做错了,还是有更好的方法?

最佳答案

是的,这个库能够将值强制转换为 float 或整数(使用 Coerce)。例如:

>>> from voluptuous import *
>>> schema = Schema(Coerce(float))
>>> schema('1.10')
1.1
>>> schema(2.2)
2.2

这意味着它将接受普通 float ,但也接受可以转换为 float 的 (Unicode) 字符串。结果值是一个 float 。

您还可以组合多个验证器,浮点值将传递给下一个验证器:

schema = Schema(All(Coerce(float), Range(min=200)))

此架构将验证输入值是否可以强制转换为 float ,并且浮点值至少为 200。

关于python - 性感:如何在 HTTP POST 中验证来自 json 数据的非字符串值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31315324/

相关文章:

javascript - 将 JSON 数据打印到 innerHTML 中未定义 - [对象]

json - 在 Jmeter 中,如果我使用 Rest API 并从 CSV 文件中获取输入,那么 HTTP 请求采样器的正文数据部分中参数的语法是什么?

ios - 如何使用 Mantle 添加与父级的关系?

ios - 如何发送异步 http post - ios

用于更快图像加载的 http header ?

c# - ASP.NET 回发和 URL

python - 如何将 intel-mkl 与 tensorflow 一起使用

python - 为本地模块配置与主文件不同的 Python 日志记录

python Pandas : filter out records with null or empty string for a given field

python - 拆分数据并将其保存为文本文档