Metadata-Version: 2.1
Name: aiohttp-apispec
Version: 0.5.2
Summary: Build and document REST APIs with aiohttp and apispec
Home-page: https://github.com/maximdanilchenko/aiohttp-apispec
Author: Danilchenko Maksim
Author-email: dmax.dev@gmail.com
License: MIT
Description: 
        ## Install
        
        ```
        pip install aiohttp-apispec
        ```
        
        ## Quickstart
        
        ```Python
        from aiohttp_apispec import docs, use_kwargs, marshal_with, AiohttpApiSpec
        from aiohttp import web
        from marshmallow import Schema, fields
        
        
        class RequestSchema(Schema):
            id = fields.Int()
            name = fields.Str(description='name')
            bool_field = fields.Bool()
        
        
        class ResponseSchema(Schema):
            msg = fields.Str()
            data = fields.Dict()
        
        
        @docs(
            tags=['mytag'],
            summary='Test method summary',
            description='Test method description',
        )
        @use_kwargs(RequestSchema(strict=True))
        @marshal_with(ResponseSchema(), 200)
        async def index(request):
            return web.json_response({'msg': 'done', 'data': {}})
        
        
        app = web.Application()
        app.router.add_post('/v1/test', index)
        
        # init docs with all parameters, usual for ApiSpec
        doc = AiohttpApiSpec(
            app=app, title='My Documentation', version='v1', url='/api/docs/api-docs'
        )
        
        # now we can find it on 'http://localhost:8080/api/docs/api-docs'
        web.run_app(app)
        ```
        ## Adding validation middleware
        
        ```Python
        from aiohttp_apispec import aiohttp_apispec_middleware
        
        ...
        
        app.middlewares.append(aiohttp_apispec_middleware)
        ```
        Now you can access all validated data in route from ```request['data']``` like so:
        
        ```Python
        @docs(
            tags=['mytag'],
            summary='Test method summary',
            description='Test method description',
        )
        @use_kwargs(RequestSchema(strict=True))
        @marshal_with(ResponseSchema(), 200)
        async def index(request):
            uid = request['data']['id']
            name = request['data']['name']
            return web.json_response(
                {'msg': 'done', 'data': {'info': f'name - {name}, id - {uid}'}}
            )
        ```
        
        ## Build swagger web client
        You can do it easily with [aiohttp_swagger](https://github.com/cr0hn/aiohttp-swagger) library:
        
        ```Python
        from aiohttp_swagger import setup_swagger
        
        ...
        
        setup_swagger(
            app=app, swagger_url='/api/doc', swagger_info=app['swagger_dict']
        )
        # now we can access swagger client on /api/doc url
        ```
        
        
Keywords: aiohttp marshmallow apispec swagger
Platform: UNKNOWN
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Natural Language :: English
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.6
Description-Content-Type: text/markdown
