现在用的是laravel 5.5,不管是api接口还是web直接渲染,都能很好的应对,api端的登陆验证可以使用passport,web短的直接使用自带的,这个大问题解决了就可以狠狠地放下dingo和jwt了,他们已经out了。今天来说说laravel的路由分割。在laravel5.5中,路由文件分为两个,一个web.php一个api.php,你想象一下,如果需要进行版本迭代,你的路由文件是不是会很庞大,而且不同版本的写在一起,这样本身就会很乱。既然laravel已经分成了两个路由文件,那肯定可以裂变更多的出来!要是可以不同的版本,都来个路由文件,那就太好了!
呵呵,你别说,还真的可以这么干!我们看看provider目录下面,那些个文件都是和服务启动相关的,不能瞎改,我们进去会发现有这个文件,他就是启动路由的。
D:\phpStudy\WWW\BCCKidV1.0\app\Providers\RouteServiceProvider.php
一进去就看到这个代码,这个是不是引起了你的兴趣?看到没?那个地方还特意划了两个斜杠,意思是只要你愿意,还可以使劲加。
public function map()
{
$this->mapApiRoutes();
$this->mapWebRoutes();
//
}
继续往下看,就看到下面两个方法,这一看应该都明白了吧?直接在routes下面加你想要的路由文件,然后写到这里来就行了,还可以定义前缀和中间件。是不是爽歪了?
protected function mapWebRoutes()
{
Route::middleware('web')
->namespace($this->namespace)
->group(base_path('routes/web.php'));
}
protected function mapApiRoutes()
{
Route::prefix('api')
->middleware('api')
->namespace($this->namespace)
->group(base_path('routes/api.php'));
}
laravel越来越懂程序员了,大爱!
更新一下,在laravel5.5.43里面,我尝试添加多个路由文件的时候,一直报下面这个错误,原因是
Route::prefix('api')得到的是一个string,正确的做法是把prefix放到middleware的后面去
Symfony \ Component \ Debug \ Exception \ FatalThrowableError (E_ERROR)
Call to a member function middleware() on string