空搜索不返回描述性消息

前端不允许空搜索,并会显示一条有帮助的消息,说明搜索词过短。

然而,API 端点仍然允许空搜索,但响应是一个包含 NULL 值的 JSON 对象,状态码为 200。

API 是否应该返回一条描述性错误消息并附带 400 状态码?

预期:

// 400 错误
{
  "errors": [ "您向请求提供了无效参数:q" ],
  "error_type": "invalid_parameters"
}

实际:

// 200 成功
{
  "grouped_search_result": null
}

这里的 API 当然可以改进,但查询路由支持大量参数:

我们需要非常谨慎地确定是将 min_search_term_length 视为强制性要求还是可选配置。

感谢 @sam

现状如下:

  • 空搜索是 API 中的一个死区
  • 搜索端点接受搜索词,同时也接受元数据参数(用户、分类、标签等)
  • 元数据参数未在 API 文档中说明
  • 前端能正确验证搜索,但后端 API 仅部分验证(允许空搜索通过)
  • 无论何种情况,响应消息都应具有描述性

希望这份概述能有所帮助。
依我看,这是一个漏洞。如果是预期行为,我会感到惊讶。
无论如何,感谢你的帮助 :v: