【问题标题】:How to validate URL parameters in Flask app?如何验证 Flask 应用程序中的 URL 参数?
【发布时间】:2015-06-16 14:12:42
【问题描述】:

我正在用 Flask 编写一个 RESTful API。我可以通过Request Object 访问 URL 参数。验证给定 URL 参数的最佳方法是什么?

例如:

/places?zip=97239 # This is a valid filter
/places?foo=bar   # This is not a valid filter, 404 response?

一种解决方案是搜索request.args,并将每个条目与一组有效的 URL 参数进行比较。有没有更好的办法?

谢谢!

【问题讨论】:

    标签: python rest flask


    【解决方案1】:

    将 GET 参数放入字典并使用 voluptuous 进行验证。

    例如:

    parameters = Schema({
        Required('zip'): Coerce(int),
    })
    

    将接受任何带有“zip”键的字典,该键的值可以强制转换为整数(因此,1 或“1”取决于您获取值的方式)。然后您可以使用以下方法对其进行验证:

    parameters(my_get_params)  # should not raise an exception
    

    【讨论】:

      【解决方案2】:

      您可以使用WTForms,而不是手动进行验证,validates URL / POST parameters automatically除了可以帮助您创建实际表单外,还可以根据指定的模型进行验证。

      这是否更好将取决于您的具体情况。

      【讨论】:

        【解决方案3】:

        您可以使用flask-parameter-validation 库在 Flask 中进行验证。这很有用,因为它在后台使用 Flask 功能、处理文件/表单以及隐式转换查询参数。

        对于您的示例,您将执行以下操作:

        from flask import Flask
        from typing import Optional
        from flask_parameter_validation import ValidateParameters, Query
        
        app = Flask(__name__)
        
        
        @app.route("/places", methods=["GET"])
        @ValidateParameters()
        def check_places(
                zip: Optional[int] = Query()
             ):
            return "Hello World!"
        
        
        if __name__ == "__main__":
            app.run()
        

        【讨论】:

          猜你喜欢
          • 2017-10-05
          • 2021-09-19
          • 1970-01-01
          • 1970-01-01
          • 2021-07-23
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多