aiohug
Project description
aiohug
Tasks:
Unpack aiohttp request to arguments with annotations
Validate handlers arguments
Generate swagger specification
Examples
Run ping pong application
from aiohttp import web
from aiohug import RouteTableDef
routes = RouteTableDef()
@routes.get("/ping/")
async def ping():
return "pong"
app = web.Application()
app.add_routes(routes)
if __name__ == "__main__":
web.run_app(app)
There is no more request object in handler.
Arguments from path and query
@routes.get("/hello/{name}/")
async def hello(name: fields.String(), greeting: fields.String() = "Hello"):
return {"msg": f"{greeting}, {name}"}
Body with schema
from aiohttp import web
from aiohug import RouteTableDef
routes = RouteTableDef()
class PayloadSchema(Schema):
count = fields.Int()
@routes.get("/")
async def with_body(body: PayloadSchema()):
return body
app = create_app()
app.add_routes(routes)
client = await test_client(app)
resp = await client.get("/", json={"count": "5", "another": 7})
assert await resp.json() == {"count": 5}
Another shortcuts
@routes.post("/ping/")
async def ping():
return 201, "pong"
Why aiohug?
It’s just hug API implementation for aiohttp
TODO:
don’t pass default arguments
default websocket handler with ping/pong and schemas support
ws = aiohug.WSHandler()
@ws("hello") # match message by `type` field
async def hello(name: str, greeting: str="Hi"):
""" Just send {"type": "hello", "name": "Lucy", "greeting": "Hi"} """
return {"text", f"{greeting}, {name}"}
app = create_app()
app.add_routes([web.get('/ws', ws)])
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
File details
Details for the file aiohug-0.3.1.dev28385659.tar.gz
.
File metadata
- Download URL: aiohug-0.3.1.dev28385659.tar.gz
- Upload date:
- Size: 8.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.11.0 pkginfo/1.4.2 requests/2.19.1 setuptools/40.0.0 requests-toolbelt/0.8.0 tqdm/4.25.0 CPython/3.7.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 991580cfb113bed590c227f234510cdc7364a0fa33d850412d941793990937c5 |
|
MD5 | 95b0c09954343a4b4e1ece1e8fbb68bd |
|
BLAKE2b-256 | d5be22e8a29fec87b44368b39765ab2aa1a76c9db5d4a40b936f5c97c2516a5d |