Skip to main content

sanic-validation

Build Status

Validation for sanic endpoints.

Installation

pip install sanic-validation

Usage example

Body JSON validation

from sanic import Sanic
from sanic.response import json
from sanic_validation import validate_json


app = Sanic()

schema = {'name': {'type': 'string', 'required': True}}


@app.route('/')
@validate_json(schema)
async def _simple_endpoint(request):
    return json({'message': 'Hello ' + request.json['name']})

app.run('0.0.0.0')

Query parameters validation

from sanic import Sanic
from sanic.response import json
from sanic_validation import validate_args


app = Sanic()

schema = {'name': {'type': 'string', 'required': True}}


@app.route('/')
@validate_args(schema)
async def _simple_endpoint(request):
    return json({'message': 'Hello ' + request.raw_args['name']})

app.run('0.0.0.0')

Schema format

Internally, sanic-validation uses cerberus as a validation provider. Detailed format documentation can be found here.

Example validation success

Request

GET / HTTP/1.1
Accept: application/json, */*
Accept-Encoding: gzip, deflate
Connection: keep-alive
Content-Length: 16
Content-Type: application/json
Host: localhost:8000
User-Agent: HTTPie/0.9.9

{
    "name": "John"
}

Response

HTTP/1.1 200 OK
Connection: keep-alive
Content-Length: 24
Content-Type: application/json
Keep-Alive: 5

{
    "message": "Hello John"
}

Example validation failure

Request

GET / HTTP/1.1
Accept: */*
Accept-Encoding: gzip, deflate
Connection: keep-alive
Host: localhost:8000
User-Agent: HTTPie/0.9.9

Response

HTTP/1.1 400 Bad Request
Connection: keep-alive
Content-Length: 168
Content-Type: application/json
Keep-Alive: 5

{
    "error": {
        "invalid": [
            {
                "constraint": true,
                "entry": "name",
                "entry_type": "json_data_property",
                "rule": "required"
            }
        ],
        "message": "Validation failed.",
        "type": "validation_failed"
    }
}

Building the documentation

Requirements

  • Python
  • make
  • Sphinx: pip install sphinx

Building

cd docs
make html

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

sanic-validation-0.2.1.tar.gz (16.8 kB view details)

Uploaded Source

File details

Details for the file sanic-validation-0.2.1.tar.gz.

File metadata

File hashes

Hashes for sanic-validation-0.2.1.tar.gz
Algorithm Hash digest
SHA256 92ef8965eb6f6c9f2e13f8fb4aaf06ce826ad062b0d7563757943e38acb8d390
MD5 ea38563f166b5fc9b23fa12c269d691f
BLAKE2b-256 c80c3b9d7f36a7d4e7a5418e41240dc90224be5a12e9c1b0a88841920c8cbd64

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page