Strapi单类型(singleType)路由返回404问题求助
针对你遇到的Strapi单类型default_currency后台可见但路由不存在、访问端点404的问题,按以下步骤排查:
检查路由文件配置
单类型的路由路径应为单数格式,确保src/api/default-currency/routes/default-currency.js的配置正确,示例:module.exports = { routes: [ { method: 'GET', path: '/default-currency', // 单数路径,对应schema的singularName handler: 'default-currency.findOne', config: { policies: [], }, }, ], };注意路径和handler的命名需与schema的
singularName(default-currency)完全匹配,不能使用下划线格式。验证控制器与服务的导出匹配
控制器文件src/api/default-currency/controllers/default-currency.js需正确导出对应方法:module.exports = { async findOne(ctx) { const entity = await strapi.service('api::default-currency.default-currency').findOne(); ctx.body = entity; }, };服务文件
src/api/default-currency/services/default-currency.js的方法需对应控制器调用:module.exports = { async findOne() { return await strapi.db.query('api::default-currency.default-currency').findOne(); }, };重启Strapi服务
手动创建API文件后,Strapi的自动重载可能未检测到新配置,必须重启服务才能加载新的路由、控制器和服务。确认权限配置
进入后台设置 -> 角色与权限,检查目标角色(如Public)是否开启了default-currency的对应权限(如findOne),虽然404通常不是权限问题,但权限未开启可能导致间接访问失败。核对schema命名一致性
确保schema中的singularName为default-currency,且所有API文件(路由、控制器、服务)的命名和内部引用均使用该kebab-case格式,避免下划线或驼峰格式导致的匹配失败。
内容的提问来源于stack exchange,提问作者howard wolowitz

