diff --git a/spec/frank_handler_spec.cr b/spec/frank_handler_spec.cr index 4871fe8..f69a611 100644 --- a/spec/frank_handler_spec.cr +++ b/spec/frank_handler_spec.cr @@ -21,6 +21,16 @@ describe "Frank::Handler" do response.body.should eq("hello world") end + it "route parameter has more precedence than query string arguments" do + frank = Frank::Handler.new + frank.add_route "GET", "/:message" do |ctx| + "hello #{ctx.params["message"]}" + end + request = HTTP::Request.new("GET", "/world?message=coco") + response = frank.call(request) + response.body.should eq("hello world") + end + it "sets content type" do frank = Frank::Handler.new frank.add_route "GET", "/" do |env| diff --git a/src/frank/handler.cr b/src/frank/handler.cr index 8bbe545..1302907 100644 --- a/src/frank/handler.cr +++ b/src/frank/handler.cr @@ -25,7 +25,7 @@ class Frank::Handler < HTTP::Handler if params if query = uri.query CGI.parse(query) do |key, value| - params[key] = value + params[key] ||= value end end