django-rest-swagger-swaggerdoc

Inject a swagger style yaml data to the django-rest-swagger's data


Keywords
Documentation, Swagger
License
Apache-2.0
Install
pip install django-rest-swagger-swaggerdoc==1.0.post3

Documentation

django-rest-swagger-swaggerdoc - Additional Document

CircleCI Status CodeCov Status

Django REST Swagger 2.0 has changed drastically. For example, you may not put a return code in YAML files. This package provides functions to inject a swagger style yaml data to the django-rest-swagger's data.

How to use it

  1. Add rest_framework_swagger to your INSTALLED_APPS setting

    settings.py:

    INSTALLED_APPS = (
        ...
       'rest_framework_swagger',
    )
    
  2. You create a swagger style yaml file.

    This YAML file is swagger style.

    ./api_test_doc.yml:

    get:
      description: test document
      responses:
        200:
          description: success
        400:
          description: bad request
          schema:
            type: json
          headers:
            Content-Type: application/json
    
  3. You create api view function or ViewClass.

    The swaggerdoc decorator to specify the relative path from the file the view callable is defined.

    views.py:

    from rest_framework.decorators import api_view
    from rest_framework.views import APIView
    
    from django_rest_swagger_swaggerdoc import swaggerdoc
    
    @swaggerdoc('api_test_doc.yml')
    @api_view()
    def example_view(request):
        pass
    
    class ExampleView(APIView):
        @swaggerdoc('./api_test_doc.yml')
        def get(self, request):
            pass
    
  4. You create document schema view.

    Use django_rest_swagger_swaggerdoc.renderers.SwaggerAdditinalDocRenderer. DO NOT USE rest_framework_swagger.renderers.OpenAPIRenderer.

    views.py:

    from rest_framework_swagger.renderers import SwaggerUIRenderer
    from rest_framework.decorators import api_view, renderer_classes
    from rest_framework import response, schemas
    
    from django_rest_swagger_swaggerdoc.renderers import SwaggerAdditinalDocRenderer
    
    
    @api_view()
    @renderer_classes([SwaggerUIRenderer, SwaggerAdditinalDocRenderer])
    def schema_view(request):
        generator = schemas.SchemaGenerator(title='Pastebin API')
        return response.Response(generator.get_schema(request=request))
    

See example project: https://github.com/TakesxiSximada/django-rest-swagger-swaggerdoc/tree/master/examples

Install

$ pip install django-rest-swagger-swaggerdoc

It is depends on djangorestframework(>= 3.4.7). If older than version 3.7.4, it may not be able to correctly resolve the YAML path.

Other