aiohttp simple pydantic validator
Project description
aiohttp-validator
aiohttp simple pydantic http request validator
Installation
pip install aiohttp-validator
A Simple Example
import datetime as dt
from uuid import UUID
from typing import Any, Dict, List
import pydantic
from aiohttp import web
import aiohttp_validator as validator
routes = web.RouteTableDef()
@routes.get('/posts')
@validator.validated()
async def get_posts(request: web.Request, tags: List[str], limit: pydantic.conint(gt=0, le=100), offset: int = 0):
assert isinstance(tags, list)
assert isinstance(limit, int)
assert isinstance(offset, int)
# your code here ...
return web.Response(status=200)
class RequestHeaders(pydantic.BaseModel):
requestId: int
class User(pydantic.BaseModel):
name: str
surname: str
class Post(pydantic.BaseModel):
title: str
text: str
timestamp: float
author: User
tags: List[str] = pydantic.Field(default_factory=list)
@routes.post('/posts/{section}/{date}')
@validator.validated()
async def create_post(request: web.Request, body: Post, headers: RequestHeaders, section: str, date: dt.date):
assert isinstance(body, Post)
assert isinstance(headers, RequestHeaders)
assert isinstance(date, dt.date)
assert isinstance(section, str)
# your code here ...
return web.Response(status=201)
class AuthCookies(pydantic.BaseModel):
tokenId: UUID
@routes.post('/users')
@validator.validated()
async def create_user(request: web.Request, body: Dict[str, Any], headers: RequestHeaders, cookies: AuthCookies):
assert isinstance(body, dict)
assert isinstance(headers, RequestHeaders)
assert isinstance(cookies, AuthCookies)
# your code here ...
return web.Response(status=201)
app = web.Application()
app.add_routes(routes)
web.run_app(app, port=8080)
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Close
Hashes for aiohttp_validator-0.1.2-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 80b078d4ef20a9ced55acf388db9efd3f18a2eb2bc4b42e275c65cb47e9a2f6c |
|
MD5 | 471116015f1a909d79be53abfb0bcff1 |
|
BLAKE2b-256 | 0a6481ed0b8095896c663ef2cbe61ac86e6fea4f4bf94528dfef3e77f019b8d9 |