Need help with drf_openapi?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

limdauto
190 Stars 40 Forks MIT License 131 Commits 48 Opened issues

Description

[DEPRECATED] Beautiful Django Rest Framework API documentation autogeneration through OpenAPI standard

Services available

!
?

Need anything else?

Contributors list

# 56,014
psql
postgre...
Haskell
Common ...
65 commits
# 1,551
Django
civic-t...
Qt
python-...
20 commits
# 260,294
wikiped...
sqlciph...
Qt
sqlite3...
4 commits
# 258,526
HTML
swagger
openapi
Django
3 commits
# 639,103
HTML
R
visuali...
shiny
1 commit
# 2,266
Flask
python-...
python-...
repl
1 commit
# 3,274
imagema...
sass-fr...
splash
pipelin...
1 commit

===========

DRF OpenAPI

.. image:: https://img.shields.io/pypi/v/drfopenapi.svg :target: https://pypi.python.org/pypi/drfopenapi

.. image:: https://img.shields.io/travis/limdauto/drfopenapi.svg :target: https://travis-ci.org/limdauto/drfopenapi

.. image:: https://readthedocs.org/projects/drf-openapi/badge/?version=latest :target: https://drf-openapi.readthedocs.io/en/latest/?badge=latest :alt: Documentation Status

.. image:: https://pyup.io/repos/github/limdauto/drfopenapi/shield.svg :target: https://pyup.io/repos/github/limdauto/drfopenapi/ :alt: Updates

.. image:: https://badges.gitter.im/drfopenapi/Lobby.svg :target: https://gitter.im/drfopenapi/Lobby?utmsource=badge&utmmedium=badge&utmcampaign=pr-badge&utmcontent=badge :alt: Join the chat at https://gitter.im/drf_openapi/Lobby

DEPRECATION NOTICE This project is deprecated in favour of https://github.com/axnsan12/drf-yasg/ or if you can wait https://github.com/encode/django-rest-framework/commit/e5781440fa6ccff09abc6e0566bdfdd9b84a80a1 :) :) :)

Generates OpenAPI-compatible schema from API made with Django Rest Framework. Use

ReDoc 
_ as default interface instead of Swagger. First-class support for API versioning changelog & method-specific schema definition.

.. figure:: https://raw.githubusercontent.com/limdauto/drf_openapi/master/images/screenshot.png :scale: 80%

.. contents::

1. Background

Django Rest Framework has an

API schema generation/declaration mechanism 
_ provided by
coreapi 
_ standard. There are a couple of problems with the current ecosystem:
  • CoreAPI is not compatible out of the box with
    OpenAPI 
    _ which is a much more popular API standard with superior tooling support, i.e. Swagger et. al.
  • The OpenAPI codec (compatibility layer) that CoreAPI team provides drops / doesn't support a number of useful OpenAPI features.
  • There is no support for versioning or method-specific schema.

2. Requirements:

This project was born to bridge the gap between DRF and OpenAPI. The high-level requirements are as followed:

  • Can be dropped into any existing DRF project without any code change necessary.
  • Provide clear disctinction between request schema and response schema.
  • Provide a versioning mechanism for each schema. Support defining schema by version range syntax, e.g. :code:
    >1.0, <=2.0
  • Support multiple response codes, not just :code:
    200
  • All this information should be bound to view methods, not view classes.

It's important to stress the non-intrusiveness requirement, not least because I want to minimize what I will have to change when DRF itself decides to support OpenAPI officially, if at all.

3. Design

  • Schema are automatically generated from
    serializers 
    _
    • From here onwards, :code:
      schema
      and :code:
      serializer
      are used interchangably
  • Versioned schema is supported by extending :code:
    VersionedSerializers
    .
  • Metadata, i.e. versioning, response and request schema, are bound to a view method through the :code:
    view_config
    decorator.
  • Extra schema information such as response status codes and their descriptions are bound to the serializer :code:
    Meta
    class
  • Automatic response validation is optionally provided :code:
    view_config(response_serializer=FooSerializer, validate_response=True)

4. Constraints

Currently DRF OpenAPI only supports DRF project that has

versioning 
_ enabled. I have only tested
URLPathVersioning 
_ but I intend to suppor the full range of versioning scheme supported by DRF.

5. Examples

Please read the

docs 
_ for a quickstart.

Also I have recreated the example in

DRF tutorial 
_ with OpenAPI schema enabled in
_.

6. License

MIT

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.