Laravel Dingo/api 出现 The version given was unknown or has no registered routes.报错

项目部署到生产环境后,使用

php artisan route:cache

对Laravel项目路由进行缓存后,访问API接口出现The version given was unknown or has no registered routes.报错

通过查看项目文件目录bootstrap/cache/下面的routes.php发现config/api.php中写的Dingo Api的路由信息并没有缓存起来。也就直接导致了在访问api接口时出现的路由未注册的提示,因为缓存文件里面根本没有此路由信息。

查看Dingo/api官方wiki发现Dingo/api的路由信息实际应该是单独的命令去进行缓存,也就是

php artisan api:cache

然后再访问API接口则正常返回,并且项目文件目录bootstrap/cache/下面的routes.php中也缓存了api.php中的路由信息。


可能会出现的误区:

1.根据文档说明

提示无法序列化闭包。而在Dingo/api中,实际路由一般都是闭包形式编写的。


2.在查找文档的过程中,发现有人在对api.php路由进行缓存时出现下面的错误提示

Unable to prepare route [/api/version] for serialization.

此类报错一般都是Laravel项目默认的路由没删除的。

也有可能不是这条报错,但也是类似的,比如我自己的,实际删掉api.php中的

Route::middleware('auth:api')->get('/user', function (Request $request) {
return $request->user();
});

即可解决


本文涉及到的文档和问答引用自

LearnKu社区问答
https://learnku.com/laravel/t/9905/in-the-course-of-the-tutorial-the-routing-of-api-uses-closures-to-write-a-problem

Dingo/api官方wiki
https://github.com/dingo/api/wiki/Commands#apicache

打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...

相关推荐