API Reference¶
Programmatic API documentation for fastappkit.
FastAppKit Class¶
Main class that manages settings and app loading.
FastAppKit.__init__¶
Initialize FastAppKit with settings.
Signature:
Parameters:
settings: Settings instance from project'score.configmodule
Example:
from core.config import Settings
from fastappkit.core.kit import FastAppKit
settings = Settings()
kit = FastAppKit(settings=settings)
Notes:
- Calls
set_settings()internally to make settings globally available - Settings must implement
SettingsProtocol(havedatabase_urlanddebug)
FastAppKit.create_app¶
Create and configure FastAPI application.
Signature:
Returns:
FastAPI: Configured FastAPI application
Example:
from core.config import Settings
from fastappkit.core.kit import FastAppKit
settings = Settings()
kit = FastAppKit(settings=settings)
app = kit.create_app()
What it does:
- Creates FastAPI app instance
- Loads apps via
AppLoader - Executes app registrations
- Mounts routers
- Returns configured app
Settings Functions¶
get_settings¶
Get the global settings instance.
Signature:
Returns:
SettingsProtocol: Current settings instance
Example:
from fastappkit.conf import get_settings
settings = get_settings()
db_url = settings.database_url
is_debug = settings.debug
Notes:
- Returns the settings instance set by
FastAppKit.__init__ - Raises error if settings not initialized
- Django-like global accessor pattern
set_settings¶
Set the global settings instance.
Signature:
Parameters:
settings: Settings instance to set globally
Example:
from fastappkit.conf import set_settings
from core.config import Settings
settings = Settings()
set_settings(settings)
Notes:
- Called automatically by
FastAppKit.__init__ - Usually not called directly
Settings Protocol¶
Protocol that settings classes must implement.
SettingsProtocol¶
Required Attributes:
database_url: str- Database connection stringdebug: bool- Debug mode flag
Example Implementation:
from pydantic_settings import BaseSettings
from fastappkit.conf import SettingsProtocol
class Settings(BaseSettings, SettingsProtocol):
database_url: str = "sqlite:///./app.db"
debug: bool = False
App Registration¶
Register Function Signature¶
Apps provide a register() function:
Signature:
def register(app: FastAPI) -> APIRouter | None:
"""Register this app with the FastAPI application."""
return router # or None
Parameters:
app: FastAPI application instance
Returns:
APIRouter | None: Return router for auto-mount, orNonefor manual mount
Example:
from fastapi import APIRouter, FastAPI
from fastappkit.conf import get_settings
router = APIRouter()
@router.get("/posts")
def list_posts():
return []
def register(app: FastAPI) -> APIRouter:
settings = get_settings()
return router # Auto-mount
Programmatic Usage Examples¶
Basic Usage¶
# core/app.py
from core.config import Settings
from fastappkit.core.kit import FastAppKit
settings = Settings()
kit = FastAppKit(settings=settings)
app = kit.create_app()
Custom FastAPI App¶
from core.config import Settings
from fastappkit.core.kit import FastAppKit
from fastapi import FastAPI
settings = Settings()
kit = FastAppKit(settings=settings)
app = kit.create_app()
# Customize app
app.title = "My Custom API"
app.version = "1.0.0"
Subclassing FastAppKit¶
from fastappkit.core.kit import FastAppKit
from fastapi import FastAPI
from core.config import Settings
class CustomFastAppKit(FastAppKit):
def create_app(self) -> FastAPI:
app = super().create_app()
# Add custom middleware, exception handlers, etc.
app.title = "My Custom API"
return app
settings = Settings()
kit = CustomFastAppKit(settings=settings)
app = kit.create_app()
Using Settings in Routes¶
from fastappkit.conf import get_settings
from fastapi import APIRouter, Depends
from core.config import Settings
router = APIRouter()
@router.get("/config")
def get_config(settings: Settings = Depends(get_settings)):
return {
"debug": settings.debug,
"database": settings.database_url
}
Learn More¶
- Configuration - Settings configuration guide
- Creating Apps - App registration guide
- Extending FastAppKit - Customization guide