heyallan
(Allan Moreno)
1
前端不允许空搜索,并会显示一条有帮助的消息,说明搜索词过短。
然而,API 端点仍然允许空搜索,但响应是一个包含 NULL 值的 JSON 对象,状态码为 200。
API 是否应该返回一条描述性错误消息并附带 400 状态码?
预期:
// 400 错误
{
"errors": [ "您向请求提供了无效参数:q" ],
"error_type": "invalid_parameters"
}
实际:
// 200 成功
{
"grouped_search_result": null
}
sam
(Sam Saffron)
2
这里的 API 当然可以改进,但查询路由支持大量参数:
我们需要非常谨慎地确定是将 min_search_term_length 视为强制性要求还是可选配置。
heyallan
(Allan Moreno)
3
感谢 @sam
现状如下:
- 空搜索是 API 中的一个死区
- 搜索端点接受搜索词,同时也接受元数据参数(用户、分类、标签等)
- 元数据参数未在 API 文档中说明
- 前端能正确验证搜索,但后端 API 仅部分验证(允许空搜索通过)
- 无论何种情况,响应消息都应具有描述性
希望这份概述能有所帮助。
依我看,这是一个漏洞。如果是预期行为,我会感到惊讶。
无论如何,感谢你的帮助 