Skip to main content

A request handler validation tool for RESTful API endpoints.

Project description

Validator

This is a request handler validation tool for RESTful API endpoints.

How To Use

from validrequest import validator, ValidationError
from typing import Dict, Any

def request_handler(request, response, next):
    # Note: type and state must be the first rules in that order
    # i.e. type (string,float,integer,number,dict)|state (required,sometimes)
    validation_rules: Dict[str, str] = {
        "q": "string|required|max:100",
        "timestamp": "float|sometimes|min:1|max:13",
        "comment": "string|required|min:10",
        "code": "integer|required",
        "version": "float|sometimes",
        "metadata": "dict|required",
        "timeSince": "number|required"
    }
    request_parameters: Dict[str, Any] = request.body
    try:
        validator(validation_rules, request_parameters)
        return response.status(200).send("Validation successful.")
    except ValidationError as e:
        return next({ "message": e })
    except Exception:
        return next({ "message": "Something else went wrong." })

    # You can also use a decorator (@validate) - see demo.py for an example

Refer to the demo.py file for further implementations.

How to Install

python -m pip install validrequest
python -m pip install git+https://github.com/ableinc/validrequest.git

Important - Migrating from v0.0.3 to v1.0.0

Breaking Changes in Version 1.0.0 - Please carefully review the changes below

  • import library name has changed from "validator" to "validrequest":
    from validrequest import validate, validator, ValidationError
    
  • @validate decorator now accepts 'request' or 'req' as Request argument name
  • parse_level was changed to payload_level for @validate decorator
  • error callback must be named "next" for @validate decorator - it will not accept any other argument
  • error callback will return a string error message with error type - it will no longer return JSON
  • strict declaration has been removed - validation rules will always be checked against required and ignored for sometimes
  • 'number' is now an acceptable type in validation rule - this can be used for fields that may be either integer or float
  • Acceptable types in validation rules:
    • Integer: int | integer | number
    • Float: float | number
    • String: str | string
    • Dictionary: dict | dictionary | object
    • Boolean: bool | boolean

Project details


Download files

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

Source Distribution

validrequest-1.0.0.tar.gz (4.4 kB view details)

Uploaded Source

Built Distribution

validrequest-1.0.0-py3-none-any.whl (8.0 kB view details)

Uploaded Python 3

File details

Details for the file validrequest-1.0.0.tar.gz.

File metadata

  • Download URL: validrequest-1.0.0.tar.gz
  • Upload date:
  • Size: 4.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.3

File hashes

Hashes for validrequest-1.0.0.tar.gz
Algorithm Hash digest
SHA256 cec2efcbee2d1db9012499044e8e20daa2aedbefcfe58c794565a78613e2795b
MD5 80763fb1ebc43f85ae0f2d8b4dd9a9fd
BLAKE2b-256 fd1a228ba25a5d0d4e75e0e25e571e409b9a93b69339660ea1bc9902cf1a6173

See more details on using hashes here.

File details

Details for the file validrequest-1.0.0-py3-none-any.whl.

File metadata

File hashes

Hashes for validrequest-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 31aeaecf2656a3feea1d8a03fcf935f418229446eafdfd9eeebdb6967b8cdd7f
MD5 2c4302fe942be788459b7643fd2eac34
BLAKE2b-256 51b6038e4f70c7113c8347f3b7deadd3bd8634f62df9ed7210d9919aa6286058

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page