diff --git a/aws_lambda_powertools/event_handler/api_gateway.py b/aws_lambda_powertools/event_handler/api_gateway.py index c1cdde63db9..754cc24710d 100644 --- a/aws_lambda_powertools/event_handler/api_gateway.py +++ b/aws_lambda_powertools/event_handler/api_gateway.py @@ -546,6 +546,8 @@ def _remove_prefix(self, path: str) -> str: return path for prefix in self._strip_prefixes: + if path == prefix: + return "/" if self._path_starts_with(path, prefix): return path[len(prefix) :] diff --git a/docs/core/event_handler/api_gateway.md b/docs/core/event_handler/api_gateway.md index 7186e8412d1..76a72fd03c7 100644 --- a/docs/core/event_handler/api_gateway.md +++ b/docs/core/event_handler/api_gateway.md @@ -476,6 +476,8 @@ This will lead to a HTTP 404 despite having your Lambda configured correctly. Se } ``` +Note: After removing a path prefix with `strip_prefixes`, the new root path will automatically be mapped to the path argument of `/`. For example, when using `strip_prefixes` value of `/pay`, there is no difference between a request path of `/pay` and `/pay/`; and the path argument would be defined as `/`. + ## Advanced ### CORS diff --git a/tests/functional/event_handler/test_api_gateway.py b/tests/functional/event_handler/test_api_gateway.py index 683e1aa6c91..21700ec09dd 100644 --- a/tests/functional/event_handler/test_api_gateway.py +++ b/tests/functional/event_handler/test_api_gateway.py @@ -842,3 +842,21 @@ def foo(): # THEN process event correctly assert result["statusCode"] == 200 assert result["headers"]["Content-Type"] == content_types.APPLICATION_JSON + + +def test_api_gateway_request_path_equals_strip_prefix(): + # GIVEN a strip_prefix matches the request path + app = ApiGatewayResolver(strip_prefixes=["/foo"]) + event = {"httpMethod": "GET", "path": "/foo"} + + @app.get("/") + def base(): + return {} + + # WHEN calling the event handler + # WITH a route "/" + result = app(event, {}) + + # THEN process event correctly + assert result["statusCode"] == 200 + assert result["headers"]["Content-Type"] == content_types.APPLICATION_JSON