fix #895
This commit is contained in:
		| @@ -28,7 +28,7 @@ class Sanic: | ||||
|  | ||||
|     def __init__(self, name=None, router=None, error_handler=None, | ||||
|                  load_env=True, request_class=None, | ||||
|                  log_config=LOGGING): | ||||
|                  log_config=LOGGING, merge_routes=True): | ||||
|         if log_config: | ||||
|             logging.config.dictConfig(log_config) | ||||
|         # Only set up a default log handler if the | ||||
| @@ -63,6 +63,7 @@ class Sanic: | ||||
|         self.is_request_stream = False | ||||
|         self.websocket_enabled = False | ||||
|         self.websocket_tasks = [] | ||||
|         self.merge_routes = merge_routes | ||||
|  | ||||
|         # Register alternative method names | ||||
|         self.go_fast = self.run | ||||
| @@ -135,7 +136,7 @@ class Sanic: | ||||
|                 handler.is_stream = stream | ||||
|             self.router.add(uri=uri, methods=methods, handler=handler, | ||||
|                             host=host, strict_slashes=strict_slashes, | ||||
|                             version=version) | ||||
|                             version=version, merge_routes=self.merge_routes) | ||||
|             return handler | ||||
|  | ||||
|         return response | ||||
|   | ||||
| @@ -99,7 +99,7 @@ class Router: | ||||
|         return name, _type, pattern | ||||
|  | ||||
|     def add(self, uri, methods, handler, host=None, strict_slashes=False, | ||||
|             version=None): | ||||
|             version=None, merge_routes=True): | ||||
|         """Add a handler to the route list | ||||
|  | ||||
|         :param uri: path to match | ||||
| @@ -118,7 +118,7 @@ class Router: | ||||
|             else: | ||||
|                 uri = "/".join(["/v{}".format(str(version)), uri]) | ||||
|         # add regular version | ||||
|         self._add(uri, methods, handler, host) | ||||
|         self._add(uri, methods, handler, host, merge_routes=merge_routes) | ||||
|  | ||||
|         if strict_slashes: | ||||
|             return | ||||
| @@ -135,12 +135,15 @@ class Router: | ||||
|         ) | ||||
|         # add version with trailing slash | ||||
|         if slash_is_missing: | ||||
|             self._add(uri + '/', methods, handler, host) | ||||
|             self._add(uri + '/', methods, handler, host, | ||||
|                       merge_routes=merge_routes) | ||||
|         # add version without trailing slash | ||||
|         elif without_slash_is_missing: | ||||
|             self._add(uri[:-1], methods, handler, host) | ||||
|             self._add(uri[:-1], methods, handler, host, | ||||
|                       merge_routes=merge_routes) | ||||
|  | ||||
|     def _add(self, uri, methods, handler, host=None): | ||||
|     def _add(self, uri, methods, handler, host=None, | ||||
|              merge_routes=True): | ||||
|         """Add a handler to the route list | ||||
|  | ||||
|         :param uri: path to match | ||||
| @@ -229,7 +232,7 @@ class Router: | ||||
|         else: | ||||
|             route = self.routes_all.get(uri) | ||||
|  | ||||
|         if route: | ||||
|         if route and merge_routes: | ||||
|             route = merge_route(route, methods, handler) | ||||
|         else: | ||||
|             # prefix the handler name with the blueprint name | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Raphael Deem
					Raphael Deem