Route Parameters
Parameter Syntax
from core.router import Router
from app.controllers.device_controller import DeviceController
router = Router()
# Single parameter
router.on("devices/{device_id}", DeviceController.handle_device)
# Multiple parameters
router.on("buildings/{building_id}/floors/{floor_id}/sensors/{sensor_id}",
DeviceController.handle_sensor)Parameter Extraction
class DeviceController:
async def handle_device(self, device_id, payload, client):
"""
device_id: Extracted from {device_id} in the topic
payload: Message payload
client: MQTT client instance
"""
print(f"Handling device: {device_id}")
data = json.loads(payload)
# Process device data...
async def handle_sensor(self, building_id, floor_id, sensor_id, payload, client):
"""
All parameters extracted from topic pattern
"""
print(f"Sensor {sensor_id} on floor {floor_id} of building {building_id}")
# Process sensor data...Parameter Patterns
Basic Parameters
Nested Parameters
Mixed Static and Dynamic
Parameter Validation
Custom Validation in Handlers
Using Middleware for Validation
Working with Different Data Types
String Parameters (Default)
Converting to Other Types
Advanced Parameter Patterns
Optional-like Behavior with Multiple Routes
Parameter-based Routing Logic
Real-world Examples
IoT Device Management
Multi-tenant Applications
API Gateway Pattern
Error Handling
Parameter Access Errors
Best Practices
Parameter Naming
Parameter Validation
Performance Considerations
Next Steps
Last updated