我正在使用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参数进行比较。是否有更好的方法?
谢谢!
我正在使用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参数进行比较。是否有更好的方法?
谢谢!
将GET参数放入字典中,并使用voluptuous进行验证。
例如:
parameters = Schema({
Required('zip'): Coerce(int),
})
将接受任何带有“zip”键的字典,该键具有可以强制转换为整数的值(因此根据获取值的方式,可以是1或“1”)。然后可以使用以下方法进行验证:
parameters(my_get_params) # should not raise an exception
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()