Serving directories with FastAPI application

Viewed 837

I need to serve a directory that contains data, like how Apache serves an index, and I would like to serve it through my FastAPI application.

Is that possible with FastAPI or Starlette?

If not, Simplehttpserver alternatives suggests Twistd as a python package. Is it possible to have FastAPI redirect to a twistd server at the directory mount?

1 Answers

You're looking for the StaticFiles utility:

from fastapi import FastAPI
from fastapi.staticfiles import StaticFiles

app = FastAPI()

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

Arguments usage is documented on FastAPI documentation:

  • The first "/" refers to the path this "sub-application" will be "mounted" on. Kn this case, all paths will be handled by it.

  • The directory="static" refers to the name of the directory that contains your static files on your local filesystem.

  • The name="static" gives it a name that can be used internally by FastAPI.

All these parameters can be different than "static", adjust them with the needs and specific details of your own application.

Note: You will need to install aiofiles: pip install aiofiles

Related