Skip to main content
Join the official 2019 Python Developers SurveyStart the survey!

rest, restful validator aiohttp

Project description

Wraps aiophtt, for validation and rapid construction of micro-services. pros: - Easy integration without affecting the operation of the entire project - Declarative description of the input parameters - The ability to validate asynchronously - Availability of methods for http


import asyncio

from aiohttp import web

from aiovalidator import (

async def foo_validator(value):
    await asyncio.sleep(1)
    return value

def foo_default(value):
    async def default():
        return value

    return default

class Hello(web.View):
    class Field:
        field1 = IntegerField()
        field2 = IntegerField(required=False, methods={'GET'},
                              verbose_name='Field method get')
        field3 = IntegerField(validator=foo_validator, )
        field4 = IntegerField(default=foo_default)

    def get(self):
        fields = self.request['fields']
        return web.json_response()

app = web.Application(middlewares=[validator_factory(), middleware_exception])
app.router.add_get('/{user_id}/', Hello)
web.run_app(app, port=8000)

My fields example

import phonenumbers
from aiovalidator import StrField, abort

class PhoneField(StrField):
    def get_value(self, value):
        value = super().get_value(value)
            value = phonenumbers.parse(value, 'RU')
            region = phonenumbers.region_code_for_number(value)
            regions = phonenumbers.COUNTRY_CODE_TO_REGION_CODE[7]
            if not phonenumbers.is_valid_number(value):
                raise abort(status=400,
                      text='Field {} not format phone'.format(
            if region not in regions:
                raise abort(status=400,
                      text='Field {} not format phone'.format(
            value = phonenumbers.format_number(
                value, phonenumbers.PhoneNumberFormat.E164

            return value
        except phonenumbers.NumberParseException:
            raise abort(status=400, text='Field {} not valid'.format(

Project details

Download files

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

Files for aiovalidator, version 0.0.4
Filename, size File type Python version Upload date Hashes
Filename, size aiovalidator-0.0.4.tar.gz (5.1 kB) File type Source Python version None Upload date Hashes View hashes

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN SignalFx SignalFx Supporter DigiCert DigiCert EV certificate StatusPage StatusPage Status page