Skip to main content

File-based routing for FastAPI

Project description

00034-3220091456

FastAPI File-Based Router ๐Ÿš€

Motivation

Sveltekit ruined me ๐Ÿค“! I made this package because:

  1. File-based routing is the bees knees.
  2. I like to watch the world burn.
  3. It's just easier, bro.

This Python module dynamically loads FastAPI routes from a specified directory structure. It is designed to streamline the integration of API routes into a FastAPI app, making it easy to manage large applications with many endpoints.

HOW TO USE

You can import routes and API Routers as usual, but whenever you want, if you structure your endpoints like below, it will loop over the directory and put all the routes correctly.

Example

๐Ÿ“ project_root/
โ”œ ๐Ÿ“ routes/  # This folder is set as the directory in the load_routes function
โ”‚ โ”œ ๐Ÿ“„ route.py  # Translates to /api (base route of the directory)
โ”‚   โ”‚
โ”‚ โ”œ ๐Ÿ“ users/
โ”‚   โ”‚ โ”œ ๐Ÿ“„ route.py  # /api/users
โ”‚   โ”‚ โ”œ ๐Ÿ“„ [user_id].py  # /api/users/{user_id}
โ”‚   โ”‚ โ”” ๐Ÿ“„ profile.py  # /api/users/profile
โ”‚   โ”‚
โ”‚ โ”œ ๐Ÿ“ products/
โ”‚   โ”‚ โ”œ ๐Ÿ“„ route.py  # /api/products
โ”‚   โ”‚ โ”” ๐Ÿ“ [product_id]/
โ”‚   โ”‚  โ”œ ๐Ÿ“„ route.py  # /api/products/{product_id}
โ”‚   โ”‚  โ”” ๐Ÿ“„ reviews.py  # /api/products/{product_id}/reviews
โ”‚   โ”‚
โ”‚ โ”” ๐Ÿ“ settings/
โ”‚  โ”œ ๐Ÿ“„ route.py  # /api/settings
โ”‚  โ”” ๐Ÿ“ notifications/
โ”‚      โ”œ ๐Ÿ“„ route.py  # /api/settings/notifications
โ”‚      โ”” ๐Ÿ“„ email.py  # /api/settings/notifications/email
โ”œ ๐Ÿ“ templates/
โ”‚ โ”” ๐Ÿ“„ home.html  # Not relevant to FastAPI routes
โ”” ๐Ÿ“„ main.py  # Where you set up your FastAPI app and call load_routes

Installation

Clone this repository or copy the script into your project directory:

pip install fastapi-file-router

Usage

from fastapi import FastAPI
from fastapi_file_router import load_routes

app = FastAPI()

load_routes(server, "routes", verbose=True)

# Optional
if __name__ == "__main__":
    import uvicorn

    uvicorn.run(
        "main:app",
    )

Logging

Enable verbose logging to get detailed output during the route loading process, which can be helpful for debugging:

load_routes(app, Path("./routes"), verbose=True)

Contributing

Contributions are welcome! Please fork the repository and open a pull request with your features or fixes.

License

Don't be a bozo.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

fastapi_file_router-0.1.16.tar.gz (6.4 kB view details)

Uploaded Source

Built Distribution

fastapi_file_router-0.1.16-py3-none-any.whl (4.6 kB view details)

Uploaded Python 3

File details

Details for the file fastapi_file_router-0.1.16.tar.gz.

File metadata

  • Download URL: fastapi_file_router-0.1.16.tar.gz
  • Upload date:
  • Size: 6.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: pdm/2.22.4 CPython/3.10.12 Linux/5.15.0-130-generic

File hashes

Hashes for fastapi_file_router-0.1.16.tar.gz
Algorithm Hash digest
SHA256 aa1e81125be8800c73dcb3c7d714c9b58b96455d04ac6e8fce8cda6f947bda96
MD5 8ab90595c8e480c957dd8b6567b14829
BLAKE2b-256 a75a97860569fe4a2b7df3b0a721d4e4f8b8aab8d4c827de87bb04f8e7352555

See more details on using hashes here.

File details

Details for the file fastapi_file_router-0.1.16-py3-none-any.whl.

File metadata

File hashes

Hashes for fastapi_file_router-0.1.16-py3-none-any.whl
Algorithm Hash digest
SHA256 40eff11907c8cf97196f96c60a3a3341577573a71d5f2013fce9f2742b01f050
MD5 148922062534337df4b438f34aaa13cf
BLAKE2b-256 95b15f77922a8a175d911a6cd54ffa0fa1ac805aa6e3cfd3230a19b771503b04

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page