擅长:python、mysql、java
<p>我正在为此编写一个名为<a href="http://pythonhosted.org/Flask-Inputs/" rel="nofollow">Flask-Inputs</a>的库。</p>
<p>与Colander类似,您定义模式并根据它们验证输入。就像@Sean Vieira的建议一样,它依赖WTForms进行验证。</p>
<p>在内部,它将所有的<code>request</code>输入数据转换为multidict。与WTForms一样,您可以定义自定义验证器(一个内置的自定义验证器用于<code>request.json</code>数据,它使用jsonschema进行验证)。</p>
<p>因为听起来像是在对发布到公共API的数据运行验证,下面是API密钥和发布的JSON验证的示例。</p>
<pre><code>from flask_inputs import Inputs
from flask_inputs.validators import JsonSchema
schema = {
'type': 'object',
'properties': {
'name': {'type': 'string'}
}
}
class ApiInputs(Inputs):
headers = {
'Authorization': [DataRequired(), valid_api_key]
}
json = [JsonSchema(schema=schema)]
</code></pre>
<p>然后在你的路线上:</p>
<pre><code>@app.route('/api/<version>/endpoint')
def endpoint():
inputs = ApiInputs(request)
if not inputs.validate():
return jsonify(success=False, errors=inputs.errors)
</code></pre>
<p>我发现(在生产中使用它)最大的好处是在一个地方显示所有错误。覆盖所有传入数据的良好验证器可防止生产中出现许多意外/未定义的行为。</p>