You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Strapi中访问特定Todo项出现404 Not Found错误的原因及解决

可能的原因及解决方案

1. 内容类型使用UUID(documentId)作为API标识符

Strapi v4允许将内容类型的主键标识符设置为UUID(即documentId)而非默认的数字id。如果你的Todo内容类型配置了这一选项,获取单个Todo的API端点需要使用documentId的值,而非数字id。

验证方式:

  • 进入Strapi后台,打开「Content-Types Builder」
  • 找到Todo内容类型,点击「Edit」
  • 切换到「Advanced settings」标签页,查看「Identifier」选项是否选择了documentId

解决方案:

  • 若配置为使用documentId,请求URL需改为:http://localhost:1337/api/todos/rd9kcz2j4297jwlaaul6546r(替换为目标Todo的documentId值)
  • 若希望使用数字id作为标识符,将「Identifier」改回id,保存后重启Strapi服务

2. 自定义路由或插件冲突

自定义Todo的API路由,或第三方插件修改路由规则,可能导致/api/todos/:id路由无法匹配findOne操作。

验证方式:

  • 检查项目中src/api/todo/routes/todo.js文件(若存在自定义路由),确认findOne路由的参数定义正确,示例如下:
module.exports = {
  routes: [
    {
      method: 'GET',
      path: '/todos/:id',
      handler: 'todo.findOne',
      config: { policies: [] },
    },
  ],
};

解决方案:

  • 修正自定义路由的错误,或恢复默认路由
  • 暂时禁用第三方插件,重启Strapi后测试,排查是否为插件导致的路由冲突

3. 权限配置未生效

即使已确认Public角色拥有findOne权限,修改权限后未重启Strapi可能导致配置未加载。

解决方案:

  • 完全停止Strapi服务,重新启动后再次测试请求

4. 数据库条目状态异常

尽管列表接口返回了该Todo,数据库中可能存在软删除标记或状态异常。

验证方式:

  • 直接查看数据库todos表,确认目标条目的deleted_at字段为NULL,且published_at字段有有效时间值

解决方案:

  • 若deleted_at不为空,说明条目被软删除,需在Strapi后台恢复或通过数据库将该字段更新为NULL

5. 请求格式或头部问题

请求头部信息或格式错误可能导致Strapi无法正确处理请求。

解决方案:

  • 确保使用纯GET方法,无多余请求体
  • 检查请求头部Accept字段设置为application/json
  • 清除请求工具的缓存后重新发送请求

内容的提问来源于stack exchange,提问作者Basem A. Sleem

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 06:55:23