Skip to main content

Build routes using swagger specification

Project description

https://travis-ci.org/aamalev/aiohttp_apiset.svg?branch=master https://codecov.io/gh/aamalev/aiohttp_apiset/branch/master/graph/badge.svg https://img.shields.io/pypi/v/aiohttp_apiset.svg Documentation Status

Package to build routes and validate request using swagger specification 2.0.

Features

  • Building of the routing from specification swagger

  • Using inclusions other specifications with concatenate url

  • Optional output of the resulting specification and view embed swagger-ui

  • Advanced router with TreeResource

  • Extract specify parameters from request and validate with jsonschema

  • Serialize data as response with middleware

Usecase

Package aiohttp_apiset allows supports several strategies:

  • The foreign specification. When the specification is made and maintained by another team.

  • The specification in the code. When the fragments of specification are placed in the docstrings.

  • Mixed strategy. When routing are located in the specification files and operations are described in the docstrings.

Example

async def handler(request, pet_id):
    """
    ---
    tags: [Pet]
    description: Info about pet
    parameters:
      - name: pet_id
        in: path
        type: integer
        minimum: 0
    responses:
      200:
        description: OK
      400:
        description: Validation error
      404:
        description: Not found
    """
    pet = await db.pets.find(pet_id)

    if not pet:
        return {'status': 404, 'msg': 'Not Found'}

    return {
        'pet': pet,  # dict serialized inside jsonify
    }


def main():
    router = SwaggerRouter(
        swagger_ui='/swagger/',
        version_ui=2,
    )
    router.add_get('/pets/{pet_id}', handler=handler)

    app = web.Application(
        router=router,
        middlewares=[jsonify],
    )

    web.run_app(app)

Is now available in the swagger-ui to the address http://localhost:8080/swagger/. Available both branch swagger-ui. For use branch 3.x visit http://localhost:8080/swagger/?version=3

Examples: examples

History

0.8.0 (2018-02-22)

  • Support aiohttp 3.0.1

  • Support subapp

  • UrlTreeDispatcher.resources now return resources only

  • Default_operation & setdefault responses

  • Up swagger-ui to 3.10.0

  • Await Future in jsonify

0.7.4 (2017-12-22)

  • Support aiohttp 2.3.6

  • Up swagger-ui to 3.7.0

0.7.3 (2017-11-01)

  • Support OrderedDict in loader with yaml tag merge

0.7.2 (2017-10-31)

  • Fix ValidationError constructor

  • Modify Errors instance through the attribute

0.7.1 (2017-10-31)

  • Keep the order of the URLs from the specification

  • More error content in the response

  • swagger-ui up to 3.4.1

0.7.0 (2017-10-23)

  • Introduced Errors and ValidationError

  • Access to original spec by name

  • Now the default_validate is True

  • Added param headers to set_cors for specify default headers

  • swagger-ui up to 3.4.0

0.6.2 (2017-08-29)

  • Loader support encoding

  • Absolute url in ui

  • swagger-ui up to 3.1.7

0.6.1 (2017-08-26)

  • Method set_cors

0.6 (2017-08-25)

  • New loader for load schemas

  • Customization format_checkers for check and convert value

  • Support swagger-ui version 2 & 3

  • Fixed resolve route and middleware

  • Optional coromethod init in cbv

0.5.2 (2017-06-21)

  • Add method Jsonify.resolve_exception

  • Add class Validator with method factory

0.5.1 (2017-06-20)

  • Param default_options_handler

  • Refactoring middleware jsonify

  • Now require aiohttp>=1.2

0.5.0 (2017-06-16)

  • fix naming SubLocation

  • add to Sublocation add_route

  • swagger-ui.min.js as default instead swagger-ui.js

  • default tag ‘default’ instead ‘without swagger’

  • kwargs as parts in sublocation.url

0.4.5 (2017-05-27)

  • Default show single spec in ui

  • URL filtering for generated specifications by spec param

0.4.4 (2017-05-26)

  • Fix swagger-ui prefix

0.4.3 (2017-05-26)

  • Use default value for array when collectionFormat is brackets or multi (#9)

  • Back swagger-ui to 2.x

0.4.2 (2017-04-28)

  • Up swagger-ui and fix prefix static url

  • Support for decimal in JsonEncoder

0.4.1 (2017-03-26)

  • Added check for similar patterns on one location

  • Fix static return default if filename empty

0.4.0 (2017-03-22)

  • TreeUrlDispatcher is stand-alone router

  • swagger_ui param now str url location for swagger-ui

  • spec query param for swagger-ui location to point to basePath

  • Take into account the default value for array parameters (Alain Leufroy #6)

  • Extract docstring swagger data in route_factory

  • Compatibility with py36 and aiohttp2.0

0.3.4 (2016-12-20)

  • fixed swagger extractor from docstring

  • support aiohttp 1.2

0.3.3 (2016-12-16)

  • Added support pathlib

  • Drop deprecated methods in views

0.3.2 (2016-12-14)

  • Added support for collectionFormat (#4)

0.3.1 (2016-11-25)

  • fix zero for number parameter

  • transfer validation errors into client handler if specified argument errors

0.3.0 (2016-11-24)

  • Added class OperationIdMapping and param operationId_mapping in SwaggerRouter.include for load authentic specification with specify operationId (#2)

  • Fixed validation form with file

  • Fixed overriding basePath

  • Added jinja2 decorator for working with aiohttp_jinja2

  • Loading operation body from docstring

  • Blank string param for number and integer treated as a missed

0.2.5 (2016-11-08)

0.2.4 (2016-11-06)

  • Added verbosity errors validate with jsonschema

0.2.3 (2016-11-05)

  • Added compatibility with aiohttp >= 1.1

  • Added safe decode form and json

  • Fixed extract body

0.2.2 (2016-10-28)

  • Fixed convertation from match_info

0.2.1 (2016-10-27)

  • Output conversion parameter errors in response

  • Fix validation

0.2.0 (2016-10-26)

0.1.13 (2016-05-02)

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

aiohttp_apiset-0.8.0.tar.gz (5.2 MB view hashes)

Uploaded Source

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page