我正在尝试在REST API中开发错误处理,而我目前正在处理响应代码。我还没有找到适合我的问题的适当答案代码的正确答案。
我在后端代码中有这样管理的路由:
$site->route([
'route' => '/{id:^[a-z]+$}'
]);
现在假设用户输入的www.example.com/page1
与regex
模式不匹配。什么是正确的回应?我想的是404
,找不到页面,但我也认为400
响应是正确的,因为它描述了请求有错误。
如果静态网址无效,我已经使用了404,因此这是匹配网址动态部分的问题。
在REST API的情况下,这两个响应代码的使用领域是什么?
答案 0 :(得分:2)
我认为404
更合适。
根据specification,400
表示:
400(错误请求)状态代码表示服务器不能或 由于被认为是某种东西,它不会处理请求 客户端错误。
虽然404
表示:
404(未找到)状态代码表示源服务器已执行 找不到目标资源的当前表示,或者不是 愿意透露一个存在。
从客户端的角度来看,对/page1
的请求将导致错误,因为资源page1
不存在(服务器端没有匹配的路由)。
通常,400
表示服务器已经定位了资源,但由于客户端错误而无法返回该资源。在这种情况下,如果没有匹配的路由,服务器无法定位资源。无论如何,如果请求被发送到/123456
并且状态代码是400
,那么错误消息应该是什么? “您请求的网址不正确”听起来像404,“您请求的网址应遵循正则表达式:... ^ [a-z] + $ ...”听起来很奇怪。