如果请求 URL 与正则表达式不匹配,正确的状态代码是什么
What is the correct status code if request URL does not match regex
我正在尝试在我的 REST API 中开发错误处理,我目前正在处理响应代码。我还没有找到适合我的问题的响应代码的正确答案。
我在后端代码中有这样管理的路由:
$site->route([
'route' => '/{id:^[a-z]+$}'
]);
现在假设用户输入 www.example.com/page1
与 regex
模式不匹配。正确的反应是什么?我在想 404
,找不到页面,但我也认为 400
响应是正确的,因为它描述了请求有错误。
如果静态 URL 无效,我已经使用 404,所以这是匹配 URL 的动态部分的问题。
在 REST APIs 的情况下,这两个响应代码的使用领域是什么?
我觉得404
比较合适
根据specification,400
表示:
The 400 (Bad Request) status code indicates that the server cannot or
will not process the request due to something that is perceived to be
a client error.
而 404
表示:
The 404 (Not Found) status code indicates that the origin server did
not find a current representation for the target resource or is not
willing to disclose that one exists.
从客户端的角度来看,请求到/page1
会导致错误,因为资源page1
不存在(服务器端没有匹配的路由)。
通常,400
表示服务器已经定位到该资源,但由于客户端错误不能return 该资源。在这种情况下,如果没有匹配的路由,服务器将无法定位资源。无论如何,如果请求发送到/123456
并且状态码是400
,错误信息应该是什么? “Your requested URL is incorrect”听起来像 404,而“Your requested URL should follow regular expression: ...^[a-z]+$...”听起来很奇怪。
我正在尝试在我的 REST API 中开发错误处理,我目前正在处理响应代码。我还没有找到适合我的问题的响应代码的正确答案。
我在后端代码中有这样管理的路由:
$site->route([
'route' => '/{id:^[a-z]+$}'
]);
现在假设用户输入 www.example.com/page1
与 regex
模式不匹配。正确的反应是什么?我在想 404
,找不到页面,但我也认为 400
响应是正确的,因为它描述了请求有错误。
如果静态 URL 无效,我已经使用 404,所以这是匹配 URL 的动态部分的问题。
在 REST APIs 的情况下,这两个响应代码的使用领域是什么?
我觉得404
比较合适
根据specification,400
表示:
The 400 (Bad Request) status code indicates that the server cannot or will not process the request due to something that is perceived to be a client error.
而 404
表示:
The 404 (Not Found) status code indicates that the origin server did not find a current representation for the target resource or is not willing to disclose that one exists.
从客户端的角度来看,请求到/page1
会导致错误,因为资源page1
不存在(服务器端没有匹配的路由)。
通常,400
表示服务器已经定位到该资源,但由于客户端错误不能return 该资源。在这种情况下,如果没有匹配的路由,服务器将无法定位资源。无论如何,如果请求发送到/123456
并且状态码是400
,错误信息应该是什么? “Your requested URL is incorrect”听起来像 404,而“Your requested URL should follow regular expression: ...^[a-z]+$...”听起来很奇怪。