diff --git a/connexion/middleware/routing.py b/connexion/middleware/routing.py index cac632d40..8c84278e9 100644 --- a/connexion/middleware/routing.py +++ b/connexion/middleware/routing.py @@ -14,6 +14,7 @@ from connexion.operations import AbstractOperation from connexion.resolver import Resolver from connexion.spec import Specification +from connexion.utils import sort_routes _scope: ContextVar[dict] = ContextVar("SCOPE") @@ -129,6 +130,8 @@ def add_api( next_app=self.app, **kwargs, ) + # sort routes to make sure that more specific routes are matched first + api.router.routes = sort_routes(api.router.routes, key=lambda r: r.path) # If an API with the same base_path was already registered, chain the new API as its # default. This way, if no matching route is found on the first API, the request is