laravel-路由规则

自定义路由逻辑
  • 如果想要使用自定义的路由解析规则,可以使用Route:bind方法。传入bind方法中的闭包函数(Closure)将会接收到URL中大括号对应的值,并返回需要注入到路由中的类的实例:
public function boot()
{
    parent::boot();
    Route::bind('user', function($value){
        return App\User::where('name', $value)->firstOrFail();
    });
}
  • 或者你可以重写Eloquent中的resolveRouteBinding方法。此方法将会接收到URL中大括号对应的值,并返回需要注入到路由中的类的实例:
public function resolveRouteBinding($value)
{
    return $this->where('name', $value)->firstOrFail();
}
限流

laravel包含限制访问应用中特定路由次数的中间件。如果想要开启此功能,需要将throttle中间件分配给路由或者路由组。throttle中间件接收两个参数来设置指定时间内的最大请求数。例如,指定授权用户在一分钟内最多访问60次下列路由组:

Route::middleware('auth:api', 'throttle:60,1')->group(function () {
    Route::get('/user', function () {
        //
    });
});
  • 动态限流
    你可以指定基于授权User模型的属性的动态访问的最大请求数。例如:如果你的User模型包含一个rate_limit的属性,你就可以传递此属性到throttle中间件,用来计算最大请求次数:
Route::middleware('auth:api', 'throttle:rate_limit,1')->group(function () {
    Route::get('/user', function () {
        //
    });
});
  • 单独设置访客和认证用户的限流
    可以为访客和认证用户设置不同的限流。例如,你可以为访客设置每分钟最大请求数为10,认证用户每分钟最大请求数为60:
Route::middleware('throttle:10|60,1')->group(function () {
    //
});

你可以将此功能与动态限流结合。例如,如果你的User模型包含rate_limit属性,你可以将此属性传入throttle中间件中,用来计算认证用户的最大访问数:

Route::middleware('auth:api', 'throttle:10|rate_limit,1')->group(function () {
    Route::get('/user', function () {
        //
    });
});

你可能感兴趣的:(laravel-路由规则)