>  기사  >  백엔드 개발  >  StaticFiles를 사용하여 FastAPI의 루트 경로에 사용자 정의 HTML 파일을 제공하는 방법은 무엇입니까?

StaticFiles를 사용하여 FastAPI의 루트 경로에 사용자 정의 HTML 파일을 제공하는 방법은 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2024-11-10 09:09:02429검색

How to Serve a Custom HTML File at the Root Path in FastAPI with StaticFiles?

정적 파일을 사용하는 동안 FastAPI 루트 경로에서 index.html과 다른 파일을 로드하는 방법은 무엇입니까?

문제

정적 서비스를 제공하는 FastAPI 애플리케이션에서 StaticFiles를 사용하는 파일의 경우 루트 경로에 대한 요청은 별도의 @app.get("/")에 지정된 사용자 정의 HTML 파일 대신 index.html을 반환합니다.

해결책

에 따르면 StaticFiles에 대한 Starlette 문서:

html - HTML 모드에서 실행합니다. 해당 파일이 있는 경우 디렉터리에 대한 index.html을 자동으로 로드합니다.

이 문제를 해결하려면 아래에 설명된 대로 StaticFiles 인스턴스를 /(루트 경로) 대신 /static과 같은 다른 경로에 마운트하세요.

from fastapi import FastAPI
from fastapi.staticfiles import StaticFiles
from fastapi.responses import FileResponse

app = FastAPI()

app.mount('/static', StaticFiles(directory='static'), name='static')

@app.get('/')
async def index() -> FileResponse:
    return FileResponse('static/custom.html', media_type='html')

순서가 중요

엔드포인트를 마운트하고 정의하는 순서가 중요합니다.

  • @app.get("/"을 정의한 후 StaticFiles가 마운트되는 경우) ) 엔드포인트, index.html은 자동으로 로드되지 않습니다.
  • StaticFiles가 다른 모든 엔드포인트보다 먼저 마운트되면 우선 순위로 인해 모든 요청을 처리합니다.

html=True 옵션

html=True로 설정하면 웹 콘텐츠 디렉터리를 한 줄로 간단하게 제공할 수 있습니다. 그러나 동적 콘텐츠나 추가 엔드포인트의 경우 템플릿을 사용하고 html=True를 사용하지 않고 StaticFiles를 다른 경로에 마운트하는 것이 좋습니다.

위 내용은 StaticFiles를 사용하여 FastAPI의 루트 경로에 사용자 정의 HTML 파일을 제공하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.