FastAPI Swagger URL 변경 - /docs URL 변경

from fastapi import FastAPI

app = FastAPI(docs_url='/api/docs', openapi_url='/api/openapi.json')

목적

프로젝트를 진행하면서, FastAPI를 EKS 위에서 배포하여 사용하는 서비스 환경을 설계하였다.

 

API Server를 ALB(L7)와 Route53을 통해 /api prefix로 노출시키고 정상적으로 웹서버에서 통신이 가능하게 세팅이 된 후, FastAPI의 편리한 Swagger 기능을 통해 간단한 Web UI를 제공받고자 하였다.

 

Swagger의 기본 URL은 /docs 및 /redoc 인데, 사용하는 도메인 주소에서 API 서버는 /api 를 차지한다.

 

그렇다 보니, /docs 를 입력하면 당연히 웹서버의 페이지로 라우팅되었다.

 

간단하게 기존 Swagger 기본 경로를 /api/docs로 넘겨 해결하는 방법을 공유하고자 한다.

서비스 환경이 저랬다. API 서버는 /api 로!


# Swagger 기본 URL 변경

from fastapi import FastAPI

app = FastAPI(docs_url='/api/docs', redoc_url='/api/redoc')

생각보다 너무나도 간단했다.

 

위와 같이 기본 docs_url을 원하는 경로로 지정하면 그만이였다.

 

redocs 또한 마찬가지로 구성이 가능하다.

 

본인은 Swagger만 사용하면 되서 redoc은 생략했다.


# 추가 구성 - 저것만 하면 안됨

실제로 쿠버네티스 환경에서 배포하고, 도메인 네임으로 접속을 해보니, 이제 Swagger로 넘어가는 듯 했으나, 아래와 같은 렌더링을 할 수 없다는 문구를 제공받았다.

해당 부분

이를 해결하기 위해 이것저것 뒤져봤지만, FastAPI만 사용하는데 야믈이니 Java니 그런 코드를 수정하라는 내용들이 많아 정신을 차리지 못했고..

 

이 또한 매우 간단하게 해결했다. 돌고돌아 공식문서

 

Application Configuration - FastAPI

Application Configuration There are several things that you can configure in your FastAPI application. Title, description, and version You can set the: Title: used as your API's title/name, in OpenAPI and the automatic API docs UIs. Description: the descri

master--fastapi.netlify.app

위 공식문서를 참고해서 해당 부분 코드는 아래와 같이 적용하고, 현재 잘 동작한다!

from fastapi import FastAPI

app = FastAPI(docs_url='/api/docs', openapi_url='/api/openapi.json')

도메인이 일부 생략됐지만, 인터넷 환경에서 구성 완료했다.

728x90
반응형