Skip to main content

Host FastAPI Swagger UI and ReDoc without third party CDNs

Project description

FastAPI Standalone Docs

GitHub Workflow Status Code style: black PyPI PyPI - Python Version License: MIT

Host FastAPI Swagger UI and ReDoc without any third party CDNs. Handy if you want to be able to use the docs offline or want to avoid loading content from 3rd party CDNs due to privacy reasons.

This library was heavily inspired by fastapi-offline-swagger-ui, but we wanted a way to take it into use with less boilerplate code and also have it hosted on PyPI.

Installation

The package is available on PyPI:

pip install fastapi-standalone-docs

Usage

Import StandaloneDocs and pass in the FastAPI application to it:

from fastapi import FastAPI
from fastapi_standalone_docs import StandaloneDocs

app = FastAPI()
StandaloneDocs(app=app)

The static files will by default be served from subpaths of the docs_url and redoc_url as you've specified in your FastAPI app. The library doesn't make any assumption on any particular path being reserved for the library. And if you disable either of the two UIs, the corresponding files won't either be served unnecessarily.

This example would move the Swagger UI and the static files needed for it to the path /swagger and disable the ReDoc interface and the static files needed by it:

from fastapi import FastAPI
from fastapi_standalone_docs import StandaloneDocs

app = FastAPI(docs_url="/swagger", redoc_url=None)
StandaloneDocs(app=app)

By default, the library will use the FastAPI favicons, and they're served from {docs_url}/fastapi/favicon.png and {redoc_url}/fastapi/favicon.png. You can use your own favicons like this, which will also disable the FastAPI icons:

from fastapi import FastAPI
from fastapi_standalone_docs import StandaloneDocs

app = FastAPI()
StandaloneDocs(
    app=app,
    redoc_favicon_url="/favicon.png",
    swagger_favicon_url="/favicon.png",
)

To make the docs truly stand alone the Google Fonts are by default disabled (they are used in the ReDoc interface). If you want to enable them just set with_google_fonts=True, like this:

from fastapi import FastAPI
from fastapi_standalone_docs import StandaloneDocs

app = FastAPI()
StandaloneDocs(
    app=app,
    with_google_fonts=True,
)

Disclaimer

Note! If you create multiple FastAPI apps in the same runtime (quite unlikely use-case), using StandaloneDocs on one of them will affect the other ones as well, as the library patches two of the shared functions (get_swagger_ui_html and get_redoc_html). Thus the library should not be used in a such setup unless all the apps will use StandaloneDocs with the same settings.

Development

PRs are welcome!

This project is using Poetry and pre-commit, so please ensure you've installed both. To set up the project with them run:

pre-commit install
poetry install

Running tests locally:

poetry run invoke test

Updating the static files from the CDNs:

poetry run update-fastapi-standalone-docs

If you want to test using it locally in some other project, in that project run this (make sure to adjust the path to the local repo):

poetry add ../fastapi-standalone-docs --editable

License

The code of this library itself is released under the MIT license. Please however note that this library also contains parts of ReDoc, which is licensed under the MIT license, Swagger UI, which is licensed under the Apache 2.0 License, as well as parts of FastAPI (the favicon), which is licensed under the MIT license.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

fastapi_standalone_docs-0.1.6.tar.gz (756.7 kB view details)

Uploaded Source

Built Distribution

fastapi_standalone_docs-0.1.6-py3-none-any.whl (761.7 kB view details)

Uploaded Python 3

File details

Details for the file fastapi_standalone_docs-0.1.6.tar.gz.

File metadata

  • Download URL: fastapi_standalone_docs-0.1.6.tar.gz
  • Upload date:
  • Size: 756.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.5.1 CPython/3.10.12 Linux/5.15.0-1041-azure

File hashes

Hashes for fastapi_standalone_docs-0.1.6.tar.gz
Algorithm Hash digest
SHA256 fc71751bd3d6fc17ac91c4c9aea4f45d79b87a59be0b6bb4cdc6bc9c7c599422
MD5 02929df694cdf82848f90f92351cb243
BLAKE2b-256 7feba57d38dc16b2aca09b1087ecad4de036005e69ae7b9ec959e675746a7690

See more details on using hashes here.

File details

Details for the file fastapi_standalone_docs-0.1.6-py3-none-any.whl.

File metadata

File hashes

Hashes for fastapi_standalone_docs-0.1.6-py3-none-any.whl
Algorithm Hash digest
SHA256 de6a183476466abacf069209f171592dcf70d0305396dc8b6532a7acdaf8924a
MD5 7e673c1b1554f82546e8756e146634f0
BLAKE2b-256 d151e37a7d76fd73271c89c88e4be6a8c80169deb65331018794b7ae12c682d1

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