@@ -481,39 +481,45 @@ Similarly to [Query strings](#query-strings-and-payload), you can access headers
481
481
482
482
### Handling not found routes
483
483
484
- By default, Event Handler handles not found routes by simply returning 404 with ` Not found ` text.
485
-
486
- If you'd like to handle it any differently, you can use ` not_found ` decorator.
487
-
488
- ``` python
489
- from aws_lambda_powertools import Logger, Tracer
490
- from aws_lambda_powertools.logging import correlation_paths
491
- from aws_lambda_powertools.event_handler.api_gateway import ApiGatewayResolver, Response
492
- from aws_lambda_powertools.event_handler.exceptions import NotFoundError
493
-
494
- tracer = Tracer()
495
- logger = Logger()
496
- app = ApiGatewayResolver()
497
-
498
- @app.not_found
499
- @tracer.capture_method
500
- def handle_not_found_errors (exc : NotFoundError) -> Response:
501
- # Return 418 upon 404 errors
502
- logger.info(f " Not found route: { app.current_event.path} " )
503
- return Response(status_code = 418 , content_type = content_types.TEXT_PLAIN , body = " I'm a teapot!" )
504
-
505
-
506
- @app.get (" /catch/me/if/you/can" )
507
- @tracer.capture_method
508
- def catch_me_if_you_can ():
509
- return {" message" : " oh hey" }
510
-
511
- # You can continue to use other utilities just as before
512
- @logger.inject_lambda_context (correlation_id_path = correlation_paths.API_GATEWAY_REST )
513
- @tracer.capture_lambda_handler
514
- def lambda_handler (event , context ):
515
- return app.resolve(event, context)
516
- ```
484
+ By default, we return ` 404 ` for any unmatched route.
485
+
486
+ You can use ** ` not_found ` ** decorator to override this behaviour, and return a custom ** ` Response ` ** .
487
+
488
+ === "app.py"
489
+
490
+ ```python hl_lines="10 12 15" title="Handling not found"
491
+ from aws_lambda_powertools import Logger, Tracer
492
+ from aws_lambda_powertools.logging import correlation_paths
493
+ from aws_lambda_powertools.event_handler.api_gateway import ApiGatewayResolver, Response
494
+ from aws_lambda_powertools.event_handler.exceptions import NotFoundError
495
+
496
+ tracer = Tracer()
497
+ logger = Logger()
498
+ app = ApiGatewayResolver()
499
+
500
+ @app.not_found
501
+ @tracer.capture_method
502
+ def handle_not_found_errors(exc: NotFoundError) -> Response:
503
+ # Return 418 upon 404 errors
504
+ logger.info(f"Not found route: {app.current_event.path}")
505
+ return Response(
506
+ status_code=418,
507
+ content_type=content_types.TEXT_PLAIN,
508
+ body="I'm a teapot!"
509
+ )
510
+
511
+
512
+ @app.get("/catch/me/if/you/can")
513
+ @tracer.capture_method
514
+ def catch_me_if_you_can():
515
+ return {"message": "oh hey"}
516
+
517
+ # You can continue to use other utilities just as before
518
+ @logger.inject_lambda_context(correlation_id_path=correlation_paths.API_GATEWAY_REST)
519
+ @tracer.capture_lambda_handler
520
+ def lambda_handler(event, context):
521
+ return app.resolve(event, context)
522
+ ```
517
523
518
524
519
525
### Exception handling
0 commit comments