JSON request validation with jsonschema for Flask applications
Switch branches/tags
Nothing to show
Clone or download
Failed to load latest commit information.
schemas First commit Apr 9, 2013
.gitignore First commit Apr 9, 2013
LICENSE First commit Apr 9, 2013
README.rst First commit Apr 9, 2013
flask_jsonschema.py First commit Apr 9, 2013
setup.py Add jsonschema to `install_requires` Apr 10, 2013
tests.py First commit Apr 9, 2013



JSON request validation for Flask applications.

Place schemas in the specified JSONSCHEMA_DIR.

import os

from flask import Flask, request
from flask_jsonschema import JsonSchema, ValidationError

app = Flask(__name__)
app.config['JSONSCHEMA_DIR'] = os.path.join(app.root_path, 'schemas')

jsonschema = JsonSchema(app)

def on_validation_error(e):
    return "error"

@app.route('/books', methods=['POST'])
@jsonschema.validate('books', 'create')
def create_book():
    # create the book
    return 'success'

The schema for the example above should be named books.json and should reside in the configured folder. It should look like so:

  "create": {
    "type": "object",
    "properties": {
      "title": {},
      "author": {}
    "required": ["title", "author"]
  "update": {
    "type": "object",
    "properties": {
      "title": {},
      "author": {}

Notice the top level action names. Flask-JsonSchema supports one "path" level so that you can organize related schemas in one file. If you do not wish to use this feature you can simply use one schema per file and remove the second parameter to the @jsonschema.validate call.