Skip to content

Nexios Routing API Reference 🗺️ ​

Core Routing Components ⚙️ ​

Routes Class ​

python
class Routes(
    path: str,
    handler: Optional[HandlerType] = None,
    methods: Optional[List[str]] = None,
    name: Optional[str] = None,
    summary: Optional[str] = None,
    description: Optional[str] = None,
    responses: Optional[Dict[int, Any]] = None,
    request_model: Optional[Type[BaseModel]] = None,
    middlewares: List[Any] = [],
    tags: Optional[List[str]] = None,
    security: Optional[List[Dict[str, List[str]]]] = None,
    operation_id: Optional[str] = None,
    deprecated: bool = False,
    parameters: List[Parameter] = [],
    exclude_from_schema: bool = False,
    **kwargs: Dict[str, Any]
)

WebsocketRoutes Class ​

python
class WebsocketRoutes(
    path: str,
    handler: WsHandlerType,
    middlewares: List[WsMiddlewareType] = []
)

HTTP Router 🚦 ​

Router Class ​

python
class Router(
    prefix: Optional[str] = None,
    routes: Optional[List[Routes]] = None,
    tags: Optional[List[str]] = None,
    exclude_from_schema: bool = False
)

Key Methods: ​

  • add_route(route: Routes) -> None âž•
  • add_middleware(middleware: MiddlewareType) -> None 🛡️
  • mount_router(app: Router, path: Optional[str] = None) -> None đź§©
  • url_for(_name: str, **path_params: Any) -> URLPath đź”—
  • get_all_routes() -> List[Routes] 📜

HTTP Method Decorators ​

python
@router.get(path: str, ...) 
@router.post(path: str, ...)
@router.put(path: str, ...)  
@router.patch(path: str, ...)
@router.delete(path: str, ...)
@router.options(path: str, ...)
@router.head(path: str, ...)
@router.route(path: str, methods: List[str], ...)

WebSocket Router 📡 ​

WSRouter Class ​

python
class WSRouter(
    prefix: Optional[str] = None,
    middleware: Optional[List[Any]] = [],
    routes: Optional[List[WebsocketRoutes]] = []
)

Key Methods: ​

  • add_ws_route(route: WebsocketRoutes) -> None âž•
  • add_ws_middleware(middleware: ASGIApp) -> None 🛡️
  • mount_router(app: WSRouter, path: Optional[str] = None) -> None đź§©
  • ws_route(path: str, handler: Optional[WsHandlerType] = None) -> Any 🎭

Base Components 🏗️ ​

BaseRouter (Abstract) ​

python
class BaseRouter(ABC):
    def __init__(self, prefix: Optional[str] = None)

RouteBuilder ​

python
class RouteBuilder:
    @staticmethod
    def create_pattern(path: str) -> RoutePattern

Helper Functions ​

python
async def request_response(func: Callable) -> ASGIApp
def websocket_session(func: Callable) -> ASGIApp
def replace_params(path: str, param_convertors: dict, path_params: dict) -> tuple
def compile_path(path: str) -> tuple

Type Definitions 📝 ​

python
RouteType = Enum('REGEX', 'PATH', 'WILDCARD')
RoutePattern = dataclass(pattern, raw_path, param_names, route_type, convertor)
URLPath = dataclass(path, protocol)
RouteParam = dataclass

Middleware Handling ⛓️ ​

Common Methods: ​

  • build_middleware_stack(app: ASGIApp) -> ASGIApp
  • wrap_middleware(mdw: MiddlewareType) -> Middleware

Error Handling ❗ ​

  • Raises NotFoundException for 404 responses
  • Raises ValueError for duplicate parameters
  • Automatic 405 Method Not Allowed responses

Path Parameter Handling 🔠 ​

Supports:

  • /users/{id} - Basic string params
  • /files/{path:path} - Path wildcards
  • /items/{id:int} - Typed parameters
  • Complex regex patterns