Skip to content

Commit 04802d6

Browse files
concat api and route level middleware
1 parent 0fdd02b commit 04802d6

1 file changed

Lines changed: 6 additions & 7 deletions

File tree

nitric/resources/apis.py

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,6 @@
3434
)
3535
from grpclib import GRPCError
3636
from nitric.api.exception import exception_from_grpc_error
37-
from os import path
3837

3938

4039
@dataclass
@@ -76,7 +75,7 @@ class ApiOptions:
7675
def __init__(
7776
self,
7877
path: str = "",
79-
middleware: List[Middleware] = None,
78+
middleware: List[Middleware] = [],
8079
security_definitions: dict[str, SecurityDefinition] = None,
8180
security: dict[str, List[str]] = None,
8281
):
@@ -92,7 +91,7 @@ class RouteOptions:
9291

9392
middleware: Union[None, List[Middleware]]
9493

95-
def __init__(self, middleware: List[Middleware] = None):
94+
def __init__(self, middleware: List[Middleware] = []):
9695
"""Construct a new route options object."""
9796
self.middleware = middleware
9897

@@ -136,7 +135,7 @@ def __init__(self, name: str, opts: ApiOptions = None):
136135
opts = ApiOptions()
137136

138137
self.name = name
139-
self.middleware = opts.middleware
138+
self.middleware = opts.middleware if opts.middleware is not None else []
140139
self.path = opts.path
141140
self.routes = []
142141
self.security_definitions = opts.security_definitions
@@ -292,8 +291,8 @@ class Route:
292291
def __init__(self, api: Api, path: str, opts: RouteOptions):
293292
"""Define a route to be handled by the provided API."""
294293
self.api = api
295-
self.path = path.join(api.path, path)
296-
self.middleware = opts.middleware
294+
self.path = api.path.join(path)
295+
self.middleware = opts.middleware if opts.middleware is not None else []
297296

298297
def method(self, methods: List[HttpMethod], *middleware: HttpMiddleware, opts: MethodOptions = None):
299298
"""Register middleware for multiple HTTP Methods."""
@@ -339,7 +338,7 @@ def __init__(
339338
self.route = route
340339
self.methods = methods
341340
self.server = FunctionServer(ApiWorkerOptions(route.api.name, route.path, methods, opts))
342-
self.server.http(*middleware)
341+
self.server.http(*route.api.middleware, *route.middleware, *middleware)
343342

344343
def start(self):
345344
"""Start the server which will respond to incoming requests."""

0 commit comments

Comments
 (0)