Laravel 8.64.0框架Route::apiResource()定义接口无返回值问题
可能的原因如下:
路由缓存未更新
若之前执行过php artisan route:cache生成路由缓存,添加apiResource配置后没有清除或重新生成缓存,旧缓存中不存在新注册的资源路由,就会导致请求无响应、返回404或空白内容。可执行php artisan route:clear清除路由缓存后重试。路由生成异常或存在冲突
先执行php artisan route:list查看路由列表,确认apiResource生成的todos.index路由的URI、请求方法、绑定的控制器方法,和你手动定义的路由是否完全一致。如果路由不存在,可检查是否在apiResource之前注册了同路径的其他路由覆盖了资源路由,或apiResources复数写法的参数配置有误。控制器语法不完整
你贴出的TodoController仅展示了index方法,若控制器后续的其他资源方法(show/store/update/destroy)存在语法错误(如缺少闭合括号、拼写错误),即使仅访问index方法,也可能在控制器初始化阶段触发静默报错(APP_DEBUG关闭时不会返回错误信息,仅返回空白响应)。可先补全控制器的所有方法,或临时注释未实现的方法测试。CORS预检请求拦截
如果是跨域请求,浏览器会先发送OPTIONS预检请求,若没有正确配置Laravel的CORS中间件(config/cors.php),预检请求会返回空响应。如果手动定义的路由恰好匹配CORS的路径规则,而资源路由未匹配,就会出现两者表现不一致的情况,可检查cors.php中的paths配置是否包含api/*路径。
内容的提问来源于stack exchange,提问作者Edvinas Valentinovičius

