Skip to main content

Build routes using swagger specification

Project description

https://github.com/aamalev/aiohttp_apiset/workflows/Tests/badge.svg Coverage Code style: ruff https://img.shields.io/pypi/v/aiohttp_apiset.svg Documentation Status https://img.shields.io/pypi/dm/aiohttp-apiset.svg Hatch project

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

Development

Check code:

hatch run lint:all

Format code:

hatch run lint:fmt

Run tests:

hatch run pytest

Run tests with coverage:

hatch run cov

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.9.16.tar.gz (8.6 MB view details)

Uploaded Source

Built Distribution

aiohttp_apiset-0.9.16-py3-none-any.whl (8.7 MB view details)

Uploaded Python 3

File details

Details for the file aiohttp_apiset-0.9.16.tar.gz.

File metadata

  • Download URL: aiohttp_apiset-0.9.16.tar.gz
  • Upload date:
  • Size: 8.6 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: python-httpx/0.24.1

File hashes

Hashes for aiohttp_apiset-0.9.16.tar.gz
Algorithm Hash digest
SHA256 fa8b8d09e36813e1aaea581a9e8364a44f1a25f1ca9c63b5b420d51789a03e60
MD5 73fd007d570df4899bd8961d31d394ab
BLAKE2b-256 aad01ab31722f7123ba37f2abb4bb75e126b43d3d869380e05cabe794b2d85c5

See more details on using hashes here.

File details

Details for the file aiohttp_apiset-0.9.16-py3-none-any.whl.

File metadata

File hashes

Hashes for aiohttp_apiset-0.9.16-py3-none-any.whl
Algorithm Hash digest
SHA256 5d743e945906d527a96590f66fe1e2cb7070920607edcfc573fe6372281d97f6
MD5 dc4df103483445d933f323ddf92c2630
BLAKE2b-256 f94444ce0191a47fb655af12b4e30723cadd47abad0eac1e53a343689404c022

See more details on using hashes here.

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