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.17.tar.gz (6.4 kB view details)

Uploaded Source

Built Distribution

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

Uploaded Python 3

File details

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

File metadata

  • Download URL: fastapi_file_router-0.1.17.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.17.tar.gz
Algorithm Hash digest
SHA256 f3a6f973762b1fbb392943aacd767caaa83d036e6000e55ca360d0ffbe0e9605
MD5 a18f3e35771b0f93956ce1461f298077
BLAKE2b-256 84daa52b220d21f4e4da0dcd1af3fe71c46446f4631014e8423a2c8119d766a4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for fastapi_file_router-0.1.17-py3-none-any.whl
Algorithm Hash digest
SHA256 bc605b526613ec0dc48bacdba304883e0873dfb1d11e75b72a9153dd5b09950d
MD5 fef95f190790e5f6707e415fdd4d5ec6
BLAKE2b-256 681a7757f27c57365a5240e9fcc63fd0821ac40480752824fc690330c245522c

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