Skip to content

Repository files navigation

FastAPI CDN host Selector for docs ui

Python Versions LatestVersionInPypi GithubActionResult Coverage Status Ruff security: bandit

Auto find swagger-ui in local files, if exist use them. Otherwise make concurrent http requests by httpx to find out which third part cdn host(cdn.jsdelivr.net/unpkg.com/cdnjs.cloudflare.com/cdn.staticfile.org) is the fastest one.

English | 中文

Install

uv pip install fastapi-cdn-host

Usage

import fastapi_cdn_host
from fastapi import FastAPI

app = FastAPI()
# include_routes ...

fastapi_cdn_host.patch_docs(app)

See more at:

Detail

  1. Let's say that the default docs CDN host https://cdn.jsdelivr.net is too slow in your network, while unpkg.com is much faster.
import fastapi_cdn_host
from fastapi import FastAPI

app = FastAPI()
# Will use `unpkg.com`(or other faster host) to replace the `cdn.jsdelivr.net/npm`
fastapi_cdn_host.patch_docs(app)
  1. To support offline docs/, put swagger-ui asset files into local directory named static
from pathlib import Path

BASE_DIR = Path(__file__).parent.resolve()
STATIC_ROOT = BASE_DIR / "static"

fastapi_cdn_host.patch_docs(app, STATIC_ROOT)

This get the same result of the example in official document: https://fastapi.tiangolo.com/how-to/custom-docs-ui-assets/?h=static#self-hosting-javascript-and-css-for-docs

  1. If asset files are ready in private cdn
from fastapi_cdn_host import AssetUrl

fastapi_cdn_host.patch_docs(
    app,
    cdn_host=AssetUrl(
        js="http://my-cdn.com/swagger-ui.js",
        css="http://my-cdn.com/swagger-ui.css",
        redoc="http://my-cdn.com/redoc.standalone.js",
        favicon="http://my-cdn.com/favicon.ico",
    ),
)

License

MIT

About

Auto choose the fastest CDN host for swagger-ui in /docs.

Topics

Resources

Stars

22 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages