Skip to main content

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.

Metadata

Release files for fastapi-file-router 0.1.17

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for fastapi-file-router 0.1.17
File Size Uploaded
fastapi_file_router-0.1.17.tar.gz 6.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for fastapi-file-router 0.1.17
File Interpreter ABI Platform
fastapi_file_router-0.1.17-py3-none-any.whl Python 3 none any Details

Total release size: 10.9 kB

Release files / fastapi_file_router-0.1.17.tar.gz

Download URL fastapi_file_router-0.1.17.tar.gz
Size 6.4 kB
Tags Source
SHA-256 checksum
How to use checksums
f3a6f973762b1fbb392943aacd767caaa83d036e6000e55ca360d0ffbe0e9605
BLAKE2b-256 checksum
How to use checksums
84daa52b220d21f4e4da0dcd1af3fe71c46446f4631014e8423a2c8119d766a4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via pdm/2.22.4 CPython/3.10.12 Linux/5.15.0-130-generic

Release files / fastapi_file_router-0.1.17-py3-none-any.whl

Download URL fastapi_file_router-0.1.17-py3-none-any.whl
Size 4.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
bc605b526613ec0dc48bacdba304883e0873dfb1d11e75b72a9153dd5b09950d
BLAKE2b-256 checksum
How to use checksums
681a7757f27c57365a5240e9fcc63fd0821ac40480752824fc690330c245522c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via pdm/2.22.4 CPython/3.10.12 Linux/5.15.0-130-generic

Release history Release notifications | RSS feed

This release

0.1.17 This release

2 release files

0.1.16

2 release files

0.1.15

2 release files

0.1.14

2 release files

0.1.13

2 release files

0.1.12

2 release files

0.1.11

2 release files

0.1.10

2 release files

0.1.9

2 release files

0.1.8

2 release files

0.1.7

2 release files

0.1.6

2 release files

0.1.5

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page