class base view for fastapi
Project description
FastAPI Controller and Route Decorators
This package provides a set of decorators and utilities to simplify the creation of FastAPI controllers and routes. It allows you to define controllers as classes and routes as methods within those classes, with automatic dependency injection of shared dependencies.
Features
- Controller Class: Define a group of related routes within a single class.
- Route Decorators: Easily define route handlers with specific HTTP methods (GET, POST, PUT, DELETE, PATCH, OPTIONS, HEAD, TRACE).
- Automatic Dependency Injection: Use
Depends
to inject dependencies into controller methods. - Simple Integration: Integrate with existing FastAPI applications with minimal changes.
Installation
To use these decorators, ensure that you have FastAPI installed in your environment. If not, you can install it using pip:
pip install fastapi-nest
Then, include the provided code in your project or package it accordingly.
Usage
Defining a Controller
To create a new controller, define a class and decorate it with @controller
:
from nest import controller
@controller()
class MyController:
pass
Defining Route Handlers
Use the provided HTTP method decorators to define route handlers within your controller:
from nest import controller, get, post
@controller()
class MyController:
@get("/items")
def read_items(self):
return {"message": "Reading items"}
@post("/items")
def create_item(self, item: dict):
return {"message": "Creating item", "item": item}
Dependency Injection
Use Depends
to inject dependencies into your route handlers:
from fastapi import Depends
from nest import controller, get
def get_current_user():
# Logic to get the current user
return {"user_id": 1}
@controller()
class MyController:
# attribute inject
current_user: dict = Depends(get_current_user)
@get("/users/me")
def read_current_user(self, current_user: dict = Depends(get_current_user)):
assert self.current_user["user_id"] == current_user["user_id"]
return {"message": "Reading current user", "user": current_user}
Registering Controllers with FastAPI
To add your controller's routes to a FastAPI app, use the as_api_router
utility:
from fastapi import FastAPI
from nest import as_api_router
from my_controller import MyController
app = FastAPI()
my_controller_router = as_api_router(MyController())
app.include_router(my_controller_router)
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file fastapi-nest-0.1.1.tar.gz
.
File metadata
- Download URL: fastapi-nest-0.1.1.tar.gz
- Upload date:
- Size: 4.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.9.18
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 93799ae6bb53de085a8c2651d8b69bffd681d576d2cc35c07b436a3e86b156c5 |
|
MD5 | 43494dc4f2dd921c4243d877997669ca |
|
BLAKE2b-256 | 405b48696bf32d86e691e99570411782828b585b0394076b36c26d13f1811d28 |
File details
Details for the file fastapi_nest-0.1.1-py3-none-any.whl
.
File metadata
- Download URL: fastapi_nest-0.1.1-py3-none-any.whl
- Upload date:
- Size: 4.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.9.18
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 29f2712fd1befe9374386c3d95ee5945eb4b2e7d2c5c80a7d669803ad7dab631 |
|
MD5 | c025262081888d37476b350122995888 |
|
BLAKE2b-256 | d1b9fb1aa68c61b946d55bf574a5f38d5ea2baee4b518724f993b96d58abdc15 |