Skip to content

waketzheng/fastapi-cdn-host

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 is the fastest one.

English | 中文

Install

pip install fastapi-cdn-host

Usage

  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()
# include_routes ...

fastapi_cdn_host.patch_docs(app)  # Will use `unpkg.com`(or other faster host) to replace the `cdn.jsdelivr.net/npm`
  1. In case of there are swagger-ui asset files in local directory named static
# Will auto mount static, then use `/static/swagger-ui-bundle.js` and `/static/swagger-ui.css` as docs assets
fastapi_cdn_host.patch_docs(app)

This line is much more simple to serve offline docs then 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
# Will render /docs with the following asset urls:
#   http://my-cdn.com/swagger-ui@latest/swagger-ui-bundle.js
#   http://my-cdn.com/swagger-ui@latest/swagger-ui.css
# render /redoc with: `http://my-cdn.com/redoc/next/redoc.standalone.js`
fastapi_cdn_host.patch_docs(app, docs_cdn_host=('http://my-cdn.com', ('/swagger-ui@latest/', '/redoc/next/')))

License

MIT

About

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

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published