FlaskCerberus

Add Cerberus validation to Flask


License
BSD-3-Clause
Install
pip install FlaskCerberus==0.1rc1

Documentation

FlaskCerberus

Simple extension that enables Cerberus validation to a flask app.

Useful Links

Example Usage

from flask import Flask, jsonify, request
from FlaskCerberus import FlaskCerberus

# see http://docs.python-cerberus.org/en/stable/index.html for
# more examples and documentation on Cerberus usage.

hello_post = {
    'post_id': {'required': True, 'type': 'integer'}
}

sample = {
    'name': {'required': True, 'type': 'string', 'minlength': 2}
}

update = {
    'name': {'required': False, 'type': 'string', 'minlength': 3}
}

app = Flask(__name__)
v = FlaskCerberus()

@app.route("/post/<int:id>", methods=['GET', 'POST', 'PUT'])
@v.validate_query_string(hello_post, allow_unknown=False, require_all=False)
@v.validate_post_request(sample)
@v.validate_put_request(update)
def hello(id, **kwargs):
    if request.method == 'GET':
        return jsonify({"get post id": id})
    
    if request.method == 'POST':
        return jsonify({"create new post": True, "name": kwargs.get("name")})
    
    if request.method == "PUT":
        return jsonify({"update post id": kwargs.get("post_id"), "name": kwargs.get("name"), "id": id})

if __name__ == '__main__':
    app.run()

Release History:

0.1rc1 - 05/12/19

Updated extension to include methods that will validate query string parameters, post and put request.
Added automatic type inference based on isinstance.
Added basic request helper class.
Added valid document data to **kwargs for easy access.

0.1rc0 - 05/12/19

Initial release. Basic POST request validation functionality started.
Learned a few hard lessons on naming packages in PyPi.