diff --git a/src/kemal/context.cr b/src/kemal/context.cr index f744236..333e752 100644 --- a/src/kemal/context.cr +++ b/src/kemal/context.cr @@ -2,7 +2,6 @@ # information such as params, content_type e.g class HTTP::Server class Context - def params @request.url_params = route_lookup.params @params ||= Kemal::ParamParser.new(@request) diff --git a/src/kemal/param_parser.cr b/src/kemal/param_parser.cr index 69459cc..e7ef0f5 100644 --- a/src/kemal/param_parser.cr +++ b/src/kemal/param_parser.cr @@ -18,7 +18,12 @@ class Kemal::ParamParser {% for method in %w(url query body json) %} def {{method.id}} + # check memoization + return @{{method.id}} if @{{method.id}}_parsed + parse_{{method.id}} + # memoize + @{{method.id}}_parsed = true @{{method.id}} end {% end %} @@ -67,6 +72,4 @@ class Kemal::ParamParser end part_params end - end -