控制器中默认对 REST API 输入进行校验

页面摘要: 在 Strapi 5 中,控制器默认对 REST API 输入进行校验,而非静默清理,对于无效数据(如无法识别的字段和未经允许的关联)会抛出 400 Bad Request 错误。

清理(sanitization)是指对象被「清洗」后返回。

校验(validation)是指断言数据已经是干净的,如果发现不应存在的内容则会抛出错误。

Strapi 在 控制器中的清理与校验 中同时提供了清理和校验方法,它们可以针对输入体数据、查询参数以及输出(仅用于清理)。

在 Strapi 5 中,控制器默认对 REST API 输入进行校验,而非接受无效数据并静默清理它。

本页面是破坏性变更数据库的一部分,提供有关该破坏性变更的信息,以及从 Strapi v4 迁移到 Strapi 5 的附加说明。

破坏性变更说明

在 Strapi v4 中

在 v4 中,查询参数会被校验,但输入数据(创建和更新体数据)仅被清理。

在 Strapi 5 中

在 v5 中,查询参数和输入数据都会被校验。

迁移

本节汇总了关于该破坏性变更的有用说明和操作步骤。

说明

  • 如果请求包含无效值,将抛出 400 Bad Request 错误,例如以下情况:

    • 用户没有权限创建的关联
    • 不存在于模式(schema)中的无法识别的值
    • 试图写入不可写字段以及内部时间戳(如 createdAt 和 createdBy 字段)
    • 使用 id 字段(用于连接关联除外)来设置或更新对象的 id

手动操作步骤

用户应确保参数和输入数据有效,以避免抛出 400 错误。更多信息可在 控制器中的清理与校验 文档中找到。