Example test case
#[get("/foo")]
async fn foo() -> impl Responder {
"foo\r\n"
}
Current Behavior
$ curl -v http://localhost:8080/foo
...
* Trying 127.0.0.1...
* TCP_NODELAY set
* Expire in 200 ms for 4 (transfer 0x55e8ff381fb0)
* Connected to localhost (127.0.0.1) port 8080 (#0)
> GET /foo HTTP/1.1
> Host: localhost:8080
> User-Agent: curl/7.64.0
> Accept: */*
>
< HTTP/1.1 200 OK
< content-length: 5
< content-type: text/plain; charset=utf-8
< date: Sat, 19 Mar 2022 18:30:00 GMT
<
foo
* Connection #0 to host localhost left intact
$ curl -v -I http://localhost:8080/foo
...
* Expire in 0 ms for 1 (transfer 0x55f159685fb0)
* Trying 127.0.0.1...
* TCP_NODELAY set
* Expire in 200 ms for 4 (transfer 0x55f159685fb0)
* Connected to localhost (127.0.0.1) port 8080 (#0)
> HEAD /foo HTTP/1.1
> Host: localhost:8080
> User-Agent: curl/7.64.0
> Accept: */*
>
< HTTP/1.1 404 Not Found
HTTP/1.1 404 Not Found
< content-length: 0
content-length: 0
< date: Sat, 19 Mar 2022 18:30:58 GMT
date: Sat, 19 Mar 2022 18:30:58 GMT
<
* Connection #0 to host localhost left intact
$
Expected Behavior
The HEAD request is implemented according to the RFC specification.
I can obtain the expected behaviour by writing:
#[route("/foo", method="GET", method="HEAD")]
but this is not ergonomic.
Possible Solutions
-
Make the get macro work like #[route("/foo", method="GET", method="HEAD")] (and adjust documentation accordingly). This would mean that if an application author writes the obvious code, it is also correct.
-
Provide a new macro that behaves like #[route("/foo", method="GET", method="HEAD")], and try to discourage application authors from using #[get].
References
MDN, RFC7231 4.3.2.
Your Environment
- Rust Version (I.e, output of
rustc -V): rustc 1.61.0-nightly (1bfe40d11 2022-03-18)
- Actix Web Version: 4.0.1
Example test case
Current Behavior
Expected Behavior
The
HEADrequest is implemented according to the RFC specification.I can obtain the expected behaviour by writing:
but this is not ergonomic.
Possible Solutions
Make the
getmacro work like#[route("/foo", method="GET", method="HEAD")](and adjust documentation accordingly). This would mean that if an application author writes the obvious code, it is also correct.Provide a new macro that behaves like
#[route("/foo", method="GET", method="HEAD")], and try to discourage application authors from using#[get].References
MDN, RFC7231 4.3.2.
Your Environment
rustc -V):rustc 1.61.0-nightly (1bfe40d11 2022-03-18)