运行环境
- php5.5.12
- laravel 5.1
- postman 请求接口
还原场景
web开发项目中经常需要给APP写接口,而在laravel框架中一般推荐使用dingo+JWTAuth完成接口,根据搜索的结果完成了dingo和JWTAuth的设置,可是通过postman请求接口时,却总是出现404错误,但是通过执行php artisan route:list命令时,显示却是正常的,显示如下图:
出现了这个问题,首先想到的是搜索,可是搜索了半天都没有找到自己想要的结果(估计是自己搜索的姿势不对引起的),或者说是没有搜索到跟自己遇到同样问题的人,既然国内的搜索不到,那就上国外的网站搜索一下,可是用谷歌搜索(翻墙过去)也没有找到自己想要的,这就要开始怀疑人生了,最后想到一个程序员经常去的网站,stackoverflow,结果还真就搜到自己想要的内容,瞬间觉得精气神不一样了。下面是搜索的结果页。
在第二个结果中找到了我想要的内容,立刻马上就点击查看,一看提问者和我遇到的是相同的问题,浏览了人家遇到此问题时的解决方法,显示的结果如图:
解决办法
1. 运行下面的命令:
php artisan api:cache
2. 在.env文件中设置API的前缀
API_PREFIX=api
复制代码
通过执行上面的2个问题就能解决大部分人遇到的问题,而我自己也是遇到的第一个问题,没有运行api:cache这个命令,现在知道了要运行这个命令,再看了人家给出的解释,当然下面的这句话是我自己翻译的。
首先在你修改或编辑完你的routes.php文件之后,你需要运行下面的命令php artisan api:cache,Dingo API是从路由缓存文件中获得路由信息的,在路由文件中不能定义匿名函数。Dingo通过缓存路由时抛出错误信息,将欢迎视图移到控制器方法中。
欢迎指正问题。