首页 > 其他分享 >Laravel - Route

Laravel - Route

时间:2023-03-12 11:32:46浏览次数:36  
标签:Laravel function get Route user id 路由

参考版本:v10

Laravel 路由配置分为四个文件,都在 /routes 目录下面:

  • api.php api 无状态路由,被分配了 api 中间件。
  • channels.php
  • console.php
  • web.php web 应用路由,自动赋予了 SESSION 状态,CSRF 保护功能

路由配置

基本匹配:​​Route::​​ 加 get,post,put,patch,delete,options 等方法

Route::get($uri, function(){}); //第一种,指向回调方法
Route::get($uri,); //第二种,指向控制器方法
Route::get($uri, 'view_name', ['args'=>'value']); //第三种,指向视图

多个匹配:​​Route::​​ 加 any,match 方法

Route::any('/', $callback);   //匹配任意路由
Route::match(['get', 'post'], $callback); //匹配多种请求

正则匹配

Route::get('/user/{id}', function($id){});
Route::get('/user/{id?}', function(){$id}); //可选参数
Route::get('/user/{id}', function($id){})->where(['id' => '[0-9]+']); //参数过滤,可用除/的所有正则字符
Route::get('/user/{id}', function($id){})->whereNumber('id'); //类型过滤
Route::get('/user/{id}', function(Request $request, $id){}); //参数放在依赖注入后面
Route::pattern('id', '[0-9]+'); //全局设置,可在 RouteServiceProvider->boot() 方法中设定全局路由

伪造请求

<form action="/example" method="POST">
@method('PUT')
</form>

缺省路由

Route::fallback(function(){
//基础路由
});

传入中间件

Route::get('/user', [])

传入依赖

Route::get('/', function(Requset $request){});

匹配模型条件

Route::get('/user/{user:id}', function(User $user){});

在表单中使用 CSRF 保护,只有 web.php 中的路由生效。

<form method="POST" action="/url">
@csrf
</form>

路由组

前缀路由组

Route::prefix('/admin')->group(function(){
//基础路由
});

控制器路由组

Route::controller(Controller::class)->group(function () {
Route::get('/orders/{id}', 'show');
Route::post('/orders', 'store');
});

中间件路由组

Route::middleware(['foo', 'bar'])->group(function(){
//基础路由
});

子域名路由组

Route::domain('{domain}.example.com')->group(function () {
Route::get('user/{id}', function ($domain, $id) {});
});

路由其它用法

路由跳转

Route::redirect('/here', '/there', 302);

当前路由

Route::current();

当前方法

Route::currentRouteAction();

请求限流

自定义全局限流器:编辑文件 /Provider/RouteServiceProvider.php 的 configureRateLimiting 方法:

RateLimiter::for('global', function (Request $request) {
return Limit::perMinute(100);
});

定义限流响应方式:默认返回 429 状态码,如果想要修改:

RateLimiter::for('global', function (Request $request) {
return Limit::perMinute(100)->response(function () {
return response('Custom response...', 429);
});
});

定义限流条件:

RateLimiter::for('uploads', function (Request $request) {
return $request->user()
? Limit::perMinute(100)->by($request->user()->id) //根据用户id
: Limit::perMinute(10)->by($request->ip()); //限制IP
});

多种限流条件:

RateLimiter::for('login', function (Request $request) {
return [
Limit::perMinute(100), //一般限流
Limit::perMinute(3)->by($request->input('email')), //条件限流
];
});

限流指定路由:

Route::middleware(['throttle:uploads'])->group(function () {
//基础路由
});
//如果使用redis缓存,可以在 App\Http\Kernel 中,修改为redis限流器:
//'throttle' => \Illuminate\Routing\Middleware\ThrottleRequestsWithRedis::class

生成路由缓存

上线生产环境时,为了加速路由响应,应在应用中生成当前路由的缓存,使用:

php artisan route::cache  #生成缓存
php artisan route::clear #清除缓存




标签:Laravel,function,get,Route,user,id,路由
From: https://blog.51cto.com/jurlin/6115635

相关文章

  • VueRouter路由与Vuex状态管理
    路由的基本搭建与嵌套路由模式vue路由的搭建路由在vue中属于第三方插件,需要下载安装后进行使用。版本说明一下,Vue3搭配的是VueRouter4,目前正常安装的话,就是路由4的版本......
  • routers自动生成路由
    1.routers自动生成路由:1_1.routers自动生成路由代码:#自动生成路由第一步:导入router模块fromrest_frameworkimportrouters#自动生成路由第二步:有两个类,实例化得到对......
  • react-router 6.9更新内容
    有两种方式可以定义路由:传递ReactElements<Home/>或传递ReactComponentHome。但是如果它们同时存在,则以ReactComponent优先。缺点:通过ReactComponent方式定义无法......
  • System.MissingMethodException:“找不到方法:“System.Web.Routing.RouteValueDictio
    System.MissingMethodException:“找不到方法:“System.Web.Routing.RouteValueDictionarySystem.Web.WebPages.TypeHelper.ObjectToDictionaryUncached(System.Object)”......
  • vue项目vuerouter动态添加路由坑中之坑
    出了什么问题请求到的动态路由数据该如何应用?addRoute()?你想的太简单了!!!起因最近在用通过网络请求到的路由记录来进行动态路由渲染后端大佬说路由全部放前端不......
  • laravel列表查询时,限制关联数据的数量
    $list=Order::query()->select('id','order_no')->with(['orderLogs'=>function($query){$query->......
  • React-router-dom@5
    路由的发展阶段后端路由阶段早期的网站开发整个HTML页面是由服务器来渲染的,服务器直接生产渲染好对应的HTML页面,返回给客户端进行展示但是,一个网站,有很多页面......
  • vue如何通过$router.push传参数
    如何通过$router.push传参数下面通过A页面向B页面传值来举个例子://A页面:this.$router.push({name:'页面B',params:{data:'我是要传递的参数'}})//B......
  • vue router中useRouter,userRoute的区别
    ......
  • laravel migration创建表
    一,phpartisanmake:magrationcreate_test_table命令行字段如何设置 二,phpartisanmigrate命令行如果出现错误就添加两行代码最后成功了 ......