Hi.
Consider the following route:
#[post("/hello")]
pub fn hello() -> &'static str {
"Hello"
}
now, if you call it with:
curl http://localhost:8000/hello
it returns:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>404 Not Found</title>
</head>
<body align="center">
<div align="center">
<h1>404: Not Found</h1>
<p>The requested resource could not be found.</p>
<hr />
<small>Rocket</small>
</div>
</body>
</html>
however, since the passed URL is correct and only the method (verb) is wrong, according to rfc7231#section-6.5.5, it should return 405: Method Not Allowed with an Allow header field in a 405 response containing a list of the target resource's currently supported methods.
So, if you don't agree with that, could you provide a global option to send 405 instead of 404 for handling method not allowed errors?
TIA
From https://tools.ietf.org/html/rfc7231#section-4.1:
When a request method is received that is known by an origin
server but not allowed for the target resource, the origin server
SHOULD respond with the 405 (Method Not Allowed) status code.
I sounds like a good idea to default to 405 instead of 404, then - and applications that want a 404 can add a 405 catcher that returns a 404.
Most helpful comment
From https://tools.ietf.org/html/rfc7231#section-4.1:
I sounds like a good idea to default to 405 instead of 404, then - and applications that want a 404 can add a 405
catcher that returns a 404.