2020/05/31

FastAPIのSwagger UIをOFFにする

pythonfastapi

概要

FastAPIにはコードから自動でSwagger UIを作る機能があります。
この機能は本当に便利で、単体レベルのAPI動作確認に頻繁に利用しています。
APIを開発すると自動で、 “/docs” というpathにSwagger UIにアクセスすることができます。

swagger-ui.png

ただ、開発環境では必須なのですが、本番環境ではSwagger UIは表示されないようにする必要がありました。

なので、環境変数などをみて、表示・非表示を切り替えるようにしました。

実施事項

  1. まずは、ConfigクラスのDEBUGプロパティを準備しておきます。
from pydantic import BaseSettings


class Settings(BaseSettings):
    PROJECT_NAME: str
    DEBUG: bool
    class Config:
        case_sensitive = True
        env_file = ".env"


settings = Settings()
  1. 次に、DEBUGプロパティをみて、FastAPIのdocs_urlとredoc_urlの値を設定します
    • パラメータ"docs_url"をNoneに設定すると、非表示にできます
    • redoc_urlも同様です
app = FastAPI(
    title=settings.PROJECT_NAME,
    docs_url="/docs" if settings.DEBUG else None,
    redoc_url="/redoc" if settings.DEBUG else None,
)

こちらで対応完了です。