mirror of
https://gitea.invidious.io/iv-org/shard-kemal.git
synced 2024-08-15 00:53:36 +00:00
Implemented HTTP HEAD
method.
First I tried implementing this solution in such a way that it
explicitly clears body and set `Content-Length` header to body's size.
But for some reason, if I call the URL from cURL then `Content-Length`
header was blank which defeats the very purpose of `HEAD` requests.
I then later anticipated that since `HEAD` would be by-default
implemented by `HTTP::Server` module, there is no need to explicit
clears body and setting `Content-Length` but the way we have written
our previous specs were returning body as well. We could have used some
TestServer kind of thing but if we go to that route we explicitly need
to test non-existent route which I thought would create some
inconsistency among specs.
Crystal has clearly written specs for HEAD requests to make sure body
is not read for them. See
acd0b6afb5
e7954336f23f. I decided to write simple specs which are easy to
maintain in long-run.
We are adding identical HEAD route for every GET route which will make
HEAD requests available for all defined GET requests.
https://github.com/sdogruyol/kemal/issues/19
Added comment for code line which is adding HEAD routes for defined GET routes.
This commit is contained in:
parent
c42f1f88e9
commit
d25a611fbd
2 changed files with 20 additions and 0 deletions
|
@ -167,4 +167,21 @@ describe "Kemal::Handler" do
|
|||
response.body.should eq("Hello World from DELETE")
|
||||
end
|
||||
|
||||
it "can process HTTP HEAD requests for defined GET routes" do
|
||||
kemal = Kemal::Handler.new
|
||||
kemal.add_route "GET", "/" do |env|
|
||||
"Hello World from GET"
|
||||
end
|
||||
request = HTTP::Request.new("HEAD", "/")
|
||||
response = kemal.call(request)
|
||||
response.status_code.should eq(200)
|
||||
end
|
||||
|
||||
it "can't process HTTP HEAD requests for undefined GET routes" do
|
||||
kemal = Kemal::Handler.new
|
||||
request = HTTP::Request.new("HEAD", "/")
|
||||
response = kemal.call(request)
|
||||
response.status_code.should eq(404)
|
||||
end
|
||||
|
||||
end
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue