laravel-中新手从来不在意的路由小技巧-中间件、子域名、路由前缀和命名空间
学习文章
中间件
什么是中间件?
是一堵墙,中间件可以对 HTTP 请求进行过滤或重定向
用在什么地方?
认证中间件(别名auth
)为例,如果用户已经认证可以进行后续处理,否则将会把用户重定向到登录页面。
如何调用多个中间件?
可以Route::middleware('auth')
中参数 写成数组,['auth', 'another']
。【仅支持5.5以后的版本】
如何给路由加上前缀,如api/v1,api/v2之类的?
Route::prefix()
参数写成 你的 前缀名。
Route::prefix('api')->group(function () {
Route::get('/', function () {
// 处理 /api 路由
})->name('api.index');
Route::get('users', function () {
// 处理 /api/users 路由
})->name('api.users');
});
如果laravel中,我需要监听其他域名的路由,怎么做?比如我的有支付子域名,订单子域名,或者我还可能有多租户域名?
使用子域名路由。
Route::domain('admin.blog.test')
Route::domain('{account}.blog.test')
使用场景
- 为应用子系统设置不同的子域名
- 通过参数方式设置子域名,适用于网站拥有多租户的场景(比如天猫,顶级知名商家拥有自己独立的子域名,如 (https://xiaomi.tmall.com)
路由中,默认指向控制器路径如何修改?
- 直接在参数写路径。
- 使用 子命名空间
子命名空间如下:
// 则在这个 命名空间类,控制器都在 App\Http\Controllers\Admin\AdminController 中
Route::namespace('Admin')->group(function() {
// App\Http\Controllers\Admin\AdminController
Route::get('/admin', 'AdminController@index');
});
如何处理优化类似于 footballmatch,basketballmatch,以及下面大量的前缀不同的路由?
使用 路由命名前缀Route::name
// 路由命名+路径前缀
Route::name('foot.')->prefix('user')->group(function () {
Route::get('{ball?}', function ($id = 1) {
// 处理 /user/{id} 路由,路由命名为 foot.ball
return route('foot.ball');
})->name('ft');
});