APISpec plugin for aiohttp
Project description
aiohttp-apispec-plugin
Lightweight apispec plugin that generates OpenAPI specification for aiohttp web applications.
Installation
pip install aiohttp-apispec-plugin
Examples
With class based view
from aiohttp import web
from aiohttp_apispec_plugin import AioHttpPlugin
from apispec import APISpec
class UserView(web.View):
async def get(self) -> web.Response:
"""User Detail View
---
summary: Get User
description: Get User Data For Given `user_id`
parameters:
- name: user_id
in: path
description: User ID
required: true
schema:
type: string
responses:
200:
description: Successfully retrieved user details
content:
application/json:
schema:
properties:
id:
type: integer
username:
type: string
first_name:
type: string
last_name:
type: string
"""
app = web.Application()
app.router.add_view("/api/v1/users/{user_id}", UserView)
# Create an APISpec
spec = APISpec(
title="AioHttp Application",
version="1.0.0",
openapi_version="3.0.3",
plugins=[
AioHttpPlugin(app),
],
)
spec.path(resource=UserView)
print(spec.to_yaml())
"""
info:
title: AioHttp Application
version: 1.0.0
openapi: 3.0.3
paths:
/api/v1/users/{user_id}:
get:
description: Get User Data For Given `user_id`
parameters:
- description: User ID
in: path
name: user_id
required: true
schema:
type: string
responses:
'200':
content:
application/json:
schema:
properties:
first_name:
type: string
id:
type: integer
last_name:
type: string
username:
type: string
description: Successfully retrieved user details
summary: Get User
"""
With function based view
from aiohttp import web
from aiohttp_apispec_plugin import AioHttpPlugin
from apispec import APISpec
async def get_user(request: web.Request) -> web.Response:
"""User Detail View
---
summary: Get User
description: Get User Data For Given `user_id`
responses:
200:
description: Successfully retrieved user details
"""
app = web.Application()
app.router.add_get("/api/v1/users/{user_id}", get_user)
# Create an APISpec
spec = APISpec(
title="AioHttp Application",
version="1.0.0",
openapi_version="3.0.3",
plugins=[
AioHttpPlugin(app),
],
)
spec.path(resource=get_user)
print(spec.to_yaml()) # same behavior
Requirements
Python >= 3.6
Dependencies:
Other libs to check
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_apispec_plugin-0.1.0.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 235cb25c1b2c17e8d58fbfe725dd3997ad97a3b4b54dcab49535bfb77a7a307c |
|
MD5 | 116dfd7a3a51a3fed3d2866b55b3df03 |
|
BLAKE2b-256 | d033f9ae3089476e3379cda121e01f317929137e64213dcfabb1fa359509c521 |
Close
Hashes for aiohttp_apispec_plugin-0.1.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 24ca32ffc17bca5b49b68006747787b23b3b75294d73e6d85c40dda164e397bf |
|
MD5 | e4da1cf1b3036f5791eeaf00d5de50a0 |
|
BLAKE2b-256 | ca9931b9592968dc861150d9a2abad1476a48b0d6967245118eb217532a970ff |