Merge pull request #10 from botandrose/get_json_with_no_request_body

application/json GETs can have no request body
This commit is contained in:
Serdar Dogruyol 2015-11-10 10:58:27 +02:00
commit da0d532447
2 changed files with 26 additions and 11 deletions

View File

@ -30,18 +30,33 @@ describe "ParamParser" do
params.should eq({"hasan" => "cemal", "name" => "serdar", "age" => "99"})
end
it "parses request body" do
route = Route.new "POST", "/" { }
context "when content type is application/json" do
it "parses request body" do
route = Route.new "POST", "/" { }
request = HTTP::Request.new(
"POST",
"/",
body: "{\"name\": \"Serdar\"}",
headers: HTTP::Headers{"Content-Type": "application/json"},
)
request = HTTP::Request.new(
"POST",
"/",
body: "{\"name\": \"Serdar\"}",
headers: HTTP::Headers{"Content-Type": "application/json"},
)
params = Kemal::ParamParser.new(route, request).parse
params.should eq({"name": "Serdar"})
params = Kemal::ParamParser.new(route, request).parse
params.should eq({"name": "Serdar"})
end
it "handles no request body" do
route = Route.new "GET", "/" { }
request = HTTP::Request.new(
"GET",
"/",
headers: HTTP::Headers{"Content-Type": "application/json"},
)
params = Kemal::ParamParser.new(route, request).parse
params.should eq({} of String => AllParamTypes)
end
end
context "when content type is incorrect" do

View File

@ -38,7 +38,7 @@ class Kemal::ParamParser
end
def parse_json
return unless @request.headers["Content-Type"]? == APPLICATION_JSON
return unless @request.body && @request.headers["Content-Type"]? == APPLICATION_JSON
body = @request.body as String
json = JSON.parse(body) as Hash
json.each do |k, v|