fastapi/docs/ko/docs/advanced/sub-applications.md

3.7 KiB

하위 애플리케이션 - 마운트

만약 각각의 독립적인 OpenAPI와 문서 UI를 갖는 두 개의 독립적인 FastAPI 애플리케이션이 필요하다면, 메인 어플리케이션에 하나 (또는 그 이상의) 하위-어플리케이션(들)을 “마운트"해서 사용할 수 있습니다.

FastAPI 애플리케이션 마운트

“마운트"이란 완전히 “독립적인" 애플리케이션을 특정 경로에 추가하여 해당 하위 애플리케이션에서 선언된 경로 동작을 통해 해당 경로 아래에 있는 모든 작업들을 처리할 수 있도록 하는 것을 의미합니다.

최상단 애플리케이션

먼저, 메인, 최상단의 FastAPI 애플리케이션과 이것의 경로 동작을 생성합니다:

{!../../../docs_src/sub_applications/tutorial001.py!}

하위 애플리케이션

다음으로, 하위 애플리케이션과 이것의 경로 동작을 생성합니다:

이 하위 애플리케이션은 단지 또 다른 표준 FastAPI 애플리케이션입니다. 다만 이것은 “마운트”될 것입니다:

{!../../../docs_src/sub_applications/tutorial001.py!}

하위 애플리케이션 마운트

최상단 애플리케이션, app에 하위 애플리케이션, subapi를 마운트합니다.

이 예시에서, 하위 애플리케이션은 /subapi 경로에 마운트 될 것입니다:

{!../../../docs_src/sub_applications/tutorial001.py!}

자동으로 생성된 API 문서 확인

이제, uvicorn으로 메인 애플리케이션을 실행하십시오. 당신의 파일이 main.py라면, 이렇게 실행합니다:

$ uvicorn main:app --reload

<span style="color: green;">INFO</span>:     Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)

그리고 http://127.0.0.1:8000/docs에서 문서를 여십시오.

메인 애플리케이션의 경로 동작만을 포함하는, 메인 애플리케이션에 대한 자동 API 문서를 확인할 수 있을 것입니다:

다음으로, http://127.0.0.1:8000/subapi/docs에서 하위 애플리케이션의 문서를 여십시오.

하위 경로 접두사 /subapi 아래에 선언된 경로 동작 을 포함하는, 하위 애플리케이션에 대한 자동 API 문서를 확인할 수 있을 것입니다:

두 사용자 인터페이스 중 어느 하나를 사용해야하는 경우, 브라우저는 특정 애플리케이션 또는 하위 애플리케이션과 각각 통신할 수 있기 때문에 올바르게 동작할 것입니다.

기술적 세부사항: root_path

위에 설명된 것과 같이 하위 애플리케이션을 마운트하는 경우, FastAPI는 root_path라고 하는 ASGI 명세의 매커니즘을 사용하여 하위 애플리케이션에 대한 마운트 경로 통신을 처리합니다.

이를 통해, 하위 애플리케이션은 문서 UI를 위해 경로 접두사를 사용해야 한다는 사실을 인지합니다.

하위 애플리케이션에도 역시 다른 하위 애플리케이션을 마운트하는 것이 가능하며 FastAPI가 모든 root_path 들을 자동적으로 처리하기 때문에 모든 것은 올바르게 동작할 것입니다.

root_path와 이것을 사용하는 방법에 대해서는 프록시의 뒷단{.internal-link target=_blank} 섹션에서 배울 수 있습니다.