Swagger UI 구성하기

Swagger UI 구성하기 (Configure Swagger UI)

Swagger UI에는 몇 가지 추가적인 Swagger UI 파라미터 를 구성할 수 있어요.

이를 구성하려면 FastAPI() 앱 객체를 만들 때 swagger_ui_parameters 인자를 넘기거나, get_swagger_ui_html() 함수에 넘기면 돼요.

swagger_ui_parameters는 Swagger UI에 직접 전달되는 구성들의 딕셔너리를 받아요.

FastAPI는 그 구성들을 JSON으로 변환해서 JavaScript와 호환되게 만들어요. Swagger UI가 필요로 하는 것이 그거거든요.

출처: 공식문서

문법 하이라이팅 비활성화하기

예를 들어, Swagger UI에서 문법 하이라이팅(syntax highlighting)을 끌 수 있어요.

설정을 바꾸지 않으면 기본적으로 문법 하이라이팅이 켜져 있어요.

하지만 syntaxHighlightFalse로 설정하면 끌 수 있어요:

from fastapi import FastAPI

app = FastAPI(swagger_ui_parameters={"syntaxHighlight": False})


@app.get("/users/{username}")
async def read_user(username: str):
    return {"message": f"Hello {username}"}

...그러면 Swagger UI는 더 이상 문법 하이라이팅을 보여주지 않아요.

테마 바꾸기

마찬가지로 "syntaxHighlight.theme" 키(가운데에 점이 있다는 점에 주의하세요)로 문법 하이라이팅 테마를 설정할 수 있어요:

from fastapi import FastAPI

app = FastAPI(swagger_ui_parameters={"syntaxHighlight": {"theme": "obsidian"}})


@app.get("/users/{username}")
async def read_user(username: str):
    return {"message": f"Hello {username}"}

이 구성은 문법 하이라이팅의 색상 테마를 바꿔줘요.

기본 Swagger UI 파라미터 변경하기

FastAPI에는 대부분의 사용 사례에 적합한 몇 가지 기본 구성 파라미터가 포함돼 있어요.

이 기본 구성들은 다음과 같아요:

swagger_ui_default_parameters = {
    "dom_id": "#swagger-ui",
    "layout": "BaseLayout",
    "deepLinking": True,
    "showExtensions": True,
    "showCommonExtensions": True,
}

swagger_ui_parameters 인자에서 다른 값을 설정해서 이 중 아무거나 오버라이드할 수 있어요.

예를 들어 deepLinking을 비활성화하려면 swagger_ui_parameters에 이 설정을 넘기면 돼요:

from fastapi import FastAPI

app = FastAPI(swagger_ui_parameters={"deepLinking": False})


@app.get("/users/{username}")
async def read_user(username: str):
    return {"message": f"Hello {username}"}

기타 Swagger UI 파라미터

사용할 수 있는 다른 모든 가능한 구성들을 보려면, 공식 Swagger UI 파라미터 문서 를 읽어보세요.

JavaScript 전용 설정

Swagger UI는 다른 구성들도 JavaScript 전용 객체(예: JavaScript 함수)로 허용해요.

FastAPI에는 이런 JavaScript 전용 presets 설정도 포함돼 있어요:

presets: [
    SwaggerUIBundle.presets.apis,
    SwaggerUIBundle.SwaggerUIStandalonePreset
]

이것들은 JavaScript 객체이지 문자열이 아니어서, Python 코드에서 직접 전달할 수 없어요.

이런 JavaScript 전용 구성을 사용해야 한다면, 위의 방법 중 하나를 쓰면 돼요. 전체 Swagger UI path operation을 오버라이드하고 필요한 JavaScript를 직접 작성하세요.

더 알아보기 (Learn more)