Skip to content

Pyramid plugin for openapi spec generation (using ApiSpec)

License

Notifications You must be signed in to change notification settings

stevepiercy/pyramid_apispec

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

pyramid_apispec

pyramid_apispec allows you to create an OpenAPI specification file and an online OpenAPI explorer using the Swagger UI project for your Pyramid application and its Marshmallow schemas.

Installation

pip install pyramid_apispec

Basic usage

Check out the demo folder and minimal application example by running:

pip install -e[demo]
python demo/app.py

You can then visit API explorer page at http://0.0.0.0:6543/api-explorer.

Examples:

Hinting a route and its view:

@view_config(route_name='foo_route', renderer='json')
def foo_view():
    """A greeting endpoint.

    ---
    x-extension: value
    get:
        description: some description
        responses:
            200:
                description: response for 200 code
                schema:
                    $ref: #/definitions/BarBodySchema
    """
    return 'hi'

Rendering the spec as JSON response:

from pyramid_apispec.helpers import add_pyramid_paths

@view_config(route_name='openapi_spec', renderer='json')
def api_spec(request):
    spec = APISpec(
        title='Some API',
        version='1.0.0',
        plugins=[
            'apispec.ext.marshmallow'
        ],
    )
    # using marshmallow plugin here
    spec.definition('SomeFooBody', schema=MarshmallowSomeFooBodySchema)

    # inspect the `foo_route` and generate operations from docstring
    add_pyramid_paths(spec, 'foo_route', request=request)

    # inspection supports filtering via pyramid add_view predicate arguments
    add_pyramid_paths(
        spec, 'bar_route', request=request, request_method='post')
    return spec.to_dict()

Adding api explorer view

To compliment the spec generation this package can also provide explorer for your application API via Swagger UI project:

config.include('pyramid_apispec.views')
config.pyramid_apispec_add_explorer(
    spec_route_name='openapi_spec')

By default you need to pass the route name of the view that serves the open api spec in your application, if needed you can specify pyramid permission or custom callable (script_generator argument) to override default javascript config of Swagger UI.

The default url for the explorer is /api-explorer, this setting is controlled via explorer_route_path argument,

Running tests

pip install -e .[dev]
tox

About

Pyramid plugin for openapi spec generation (using ApiSpec)

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 72.0%
  • HTML 28.0%