Skip to content

Easily document your Sanic API with a UI

License

Notifications You must be signed in to change notification settings

sanic-org/sanic-openapi

Folders and files

NameName
Last commit message
Last commit date

Latest commit

872d38f · Jan 5, 2022
Aug 2, 2021
Dec 30, 2021
May 4, 2021
Jan 5, 2022
Jan 5, 2022
Jun 10, 2019
Jan 30, 2017
Mar 21, 2021
May 19, 2021
Jan 5, 2022
Mar 22, 2021
Jan 11, 2017
Aug 2, 2021
Dec 15, 2021
Aug 4, 2021
May 31, 2021
Jan 5, 2022

Repository files navigation

⚠️ This package is being replaced by Sanic Extensions. The project will continue to be monitored, but no new features or major development is anticipated. Sanic Extensions contains a near 1:1 upgrade if you are using Sanic OpenAPI with OAS3. Ask in the forums or discord server for questions about upgrading.

Sanic OpenAPI

Build Status PyPI PyPI Code style: black codecov

Give your Sanic API a UI and OpenAPI documentation, all for the price of free!

Example Swagger UI

Check out open collective to learn more about helping to fund Sanic.

Installation

pip install sanic-openapi

Add Swagger UI with the OpenAPI spec:

from sanic_openapi import swagger_blueprint

app.blueprint(swagger_blueprint)

You'll now have a Swagger UI at the URL /swagger/ and an OpenAPI 2.0 spec at /swagger/swagger.json. Your routes will be automatically categorized by their blueprints.

OpenAPI 2

Here is an example to use Sanic-OpenAPI 2:

from sanic import Sanic
from sanic.response import json
from sanic_openapi import openapi2_blueprint

app = Sanic(name="AwesomeApi")
app.blueprint(openapi2_blueprint)


@app.route("/")
async def test(request):
    return json({"hello": "world"})


if __name__ == "__main__":
    app.run(host="0.0.0.0", port=8000)

And you can get your Swagger document at http://localhost:8000/swagger like this:

OpenAPI 3

Here is an example to use Sanic-OpenAPI 3:

from sanic import Sanic
from sanic.response import json
from sanic_openapi import openapi3_blueprint

app = Sanic(name="AwesomeApi")
app.blueprint(openapi3_blueprint)


@app.route("/")
async def test(request):
    return json({"hello": "world"})


if __name__ == "__main__":
    app.run(host="0.0.0.0", port=8000)

And you can get your Swagger document at http://localhost:8000/swagger like this:

Documentation

Please check the documentation on Readthedocs

Contribution

Any contribution is welcome. If you don't know how to getting started, please check issues first and check our Contributing Guide to start you contribution.