Host FastAPI Swagger UI and ReDoc without third party CDNs
Project description
FastAPI Standalone Docs
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
Built Distribution
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | fc71751bd3d6fc17ac91c4c9aea4f45d79b87a59be0b6bb4cdc6bc9c7c599422 |
|
MD5 | 02929df694cdf82848f90f92351cb243 |
|
BLAKE2b-256 | 7feba57d38dc16b2aca09b1087ecad4de036005e69ae7b9ec959e675746a7690 |
File details
Details for the file fastapi_standalone_docs-0.1.6-py3-none-any.whl
.
File metadata
- Download URL: fastapi_standalone_docs-0.1.6-py3-none-any.whl
- Upload date:
- Size: 761.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.5.1 CPython/3.10.12 Linux/5.15.0-1041-azure
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | de6a183476466abacf069209f171592dcf70d0305396dc8b6532a7acdaf8924a |
|
MD5 | 7e673c1b1554f82546e8756e146634f0 |
|
BLAKE2b-256 | d151e37a7d76fd73271c89c88e4be6a8c80169deb65331018794b7ae12c682d1 |