laravel5.8(五)基本路由配置

简介: 在使用laravel之前我一直在使用thinkphp还有yii框架,这两个框架也有路由这一说,但是都没有用过。Laravel的路由功能其实还是挺全的,也很优雅~下面来说正题:1:路由的基本介绍Laravel框架默认为我们提供了两个路由文件,在根目录下的routes目录下有web.php以及api.php。这些文件通过框架自动加载,相应逻辑位于 app/Providers/RouteServiceProvider 类。routes/web.php 文件定义了 Web 界面的路由,这些路由被分配到了 web 中间件组,从而可以使用 Session 和 CSRF 保护等功能。routes/a

在使用laravel之前我一直在使用thinkphp还有yii框架,这两个框架也有路由这一说,但是都没有用过。

Laravel的路由功能其实还是挺全的,也很优雅~

下面来说正题:

1:路由的基本介绍

Laravel框架默认为我们提供了两个路由文件,在根目录下的routes目录下有web.php以及api.php。这些文件通过框架自动加载,相应逻辑位于 app/Providers/RouteServiceProvider 类。routes/web.php 文件定义了 Web 界面的路由,这些路由被分配到了 web 中间件组,从而可以使用 Session 和 CSRF 保护等功能。routes/api.php 中的路由是无状态的,这是因为被分配到了 api 中间件组。

一般情况下,我们都会使用web.php来开始定义路由。定义在 routes/web.php 中的路由可以通过在浏览器地址栏输入相应的 URL 进行访问,例如,你可以通过 blog.test/user 访问下面的路由:

php

复制代码

Route::get('/user', 'UsersController@index');

正如前面所提到的,定义在 routes/api.php 文件中的路由通过 app/Providers/RouteServiceProvider 的处理被嵌套在一个路由群组中, 在这个群组中,所有路由会被自动添加 /api 前缀,所以你不需要再到路由文件中为每个路由手动添加,你可以通过编辑 RouteServiceProvider 类来修改路由前缀以及其他的路由群组选项:

php

复制代码

/**
     * Define the "api" routes for the application.
     *
     * These routes are typically stateless.
     *
     * @return void
     */
    protected function mapApiRoutes()
    {
        Route::prefix('api')
            ->middleware('api')
            ->namespace($this->namespace)
            ->group(base_path('routes/api.php'));
    }

2:有效的路由方法

我们可以注册路由来响应任何 HTTP 请求动作:

php

复制代码

Route::get($uri, $callback);
Route::post($uri, $callback);
Route::put($uri, $callback);
Route::patch($uri, $callback);
Route::delete($uri, $callback);
Route::options($uri, $callback);

3:路由重定向

如果你需要定义一个重定向到其他 URI 的路由,可以使用 Route::redirect 方法,该方法非常方便,以至于你不需要再定义额外的路由或控制器来执行简单的重定向逻辑:

php

复制代码

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

其中 here 表示原路由,there 表示重定向之后的路由。默认情况下,Route::redirect 返回 302 状态码,你可以使用可选的第三个参数来自定义这个状态码:

php

复制代码

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

你还可以使用 Route::permanentRedirect 方法来返回 301 状态码:

php

复制代码

Route::permanentRedirect('/here', '/there');

4:路由参数

(1):必选参数

单个参数

php

复制代码

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

多个参数

php

复制代码

Route::get('posts/{post}/comments/{comment}', function ($postId, $commentId) {
    return $postId . '-' . $commentId;
});

(2):可选参数

php

复制代码

Route::get('user/{name?}', function ($name = null) {
    return $name;
});

5:路由分组

(1):中间件路由分组

要给某个路由分组中定义的所有路由分配中间件,可以在定义分组之前使用 middleware 方法。中间件将会按照数组中定义的顺序依次执行:

php

复制代码

Route::middleware(['first', 'second'])->group(function () {
    Route::get('/', function () {
        // Uses first & second Middleware
    });
    Route::get('user/profile', function () {
        // Uses first & second Middleware
    });
});

(2):路由前缀

prefix 方法可以用来为分组中每个路由添加一个给定 URI 前缀,例如,你可以为分组中所有路由 URI 添加 admin 前缀 :

php

复制代码

Route::prefix('admin')->group(function () {
    Route::get('users', function () {
        // Matches The "/admin/users" URL
    });
});

6:兜底路由

使用 Route::fallback 方法可以定义一个当所有其他路由都未能匹配请求 URL 时所执行的路由。通常,未处理请求会通过 Laravel 的异常处理器自动渲染一个「404」页面,不过,如果你在 routes/web.php 文件中定义了 fallback 路由的话,所有 web 中间件组中的路由都会应用此路由作为兜底,当然,如果需要的话,你还可以添加额外的中间件到此路由:

php

复制代码

Route::fallback(function () {
    //
});

7:频率限制

Laravel 自带了一个中间件用于限制对应用路由的访问频率。开始使用该功能之前,分配 throttle 中间件到某个路由或路由分组,throttle 中间件接收两个参数用于判断给定时间内(单位:分钟)的最大请求次数。例如,我们指定登录用户每分钟只能访问下面的分组路由 60 次:

php

复制代码

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

超出访问次数后,会返回 429 状态码并提示「Too many requests」。

动态频率限制

此外,还可以基于 User 模型的属性来动态设置最大请求次数。例如,如果 User 模型包含 rate_limit 属性,就可以将其这个属性名传递到 throttle 中间件,这样就可以将属性值作为计算最大请求次数的数据来源:

php

复制代码

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

8:获取当前访问路由属性

你可以使用 Route 门面上的 current、currentRouteName 和 currentRouteAction 方法来访问处理当前输入请求的路由信息:

php

复制代码

// 获取当前路由实例
$route = Route::current();
// 获取当前路由名称
$name = Route::currentRouteName();
// 获取当前路由action属性
$action = Route::currentRouteAction();

以上大概就是路由的基本知识,有好的建议,请在下方输入你的评论。

欢迎访问个人博客 guanchao.site

欢迎访问我的小程序:打开微信->发现->小程序->搜索“时间里的”

目录
相关文章
|
20天前
|
移动开发 JavaScript 前端开发
Javaweb之Vue路由的详细解析
Vue.js是一款备受欢迎的前端框架,以其简洁的API和组件化开发模式著称。Vue Router作为其官方路由管理器,在构建单页面应用(SPA)时发挥关键作用,通过URL变化管理组件切换,实现无刷新过渡。本文将详细介绍Vue Router的基础概念、主要功能及使用步骤,帮助JavaWeb开发者快速掌握其工作原理及实践应用。
13 1
|
3月前
【Vue3+TypeScript】CRM系统项目搭建之 — 路由配置
【Vue3+TypeScript】CRM系统项目搭建之 — 路由配置
26 0
【vue2项目总结】——路由配置
【vue2项目总结】——路由配置
121 0
|
5月前
|
前端开发 JavaScript 中间件
koa开发实践2:为koa项目添加路由模块
koa开发实践2:为koa项目添加路由模块
116 0
|
10月前
|
小程序
laravel8(二)配置自定义路由文件
关于laravel5添加自定义路由文件,请移步《laravel5.8(十五)新增自定义路由文件》 这里大概记录一下laravel8添加自定义路由文件的过程: 持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第11天,点击查看活动详情 1:首先在routes目录下创建你要添加的自定义路由文件 我这里直接复制的web.php。 2:修改app/Providers目录下RouteServiceProvider.php文件 我这里也是直接复制web部分的代码改的名字 3:修改app/Http目录下Kernel.php文件 我这里还是直接复制web部分的代码改的名
77 1
|
前端开发 JavaScript 数据安全/隐私保护
使用vue-cli搭建SPA项目及使用和路由及路由嵌套的使用
使用vue-cli搭建SPA项目及使用和路由及路由嵌套的使用
53 0
|
JavaScript
vue 项目路由配置
vue 项目路由配置
88 0
|
网络架构
Koa 路由
Koa 路由
108 0
|
PHP
【laravel】@4 路由
【laravel】@4 路由
109 0
【laravel】@4 路由
|
JavaScript API 开发工具
Vue项目Vite配置代理解决跨域问题
Vue项目Vite配置代理解决跨域问题
2384 0
Vue项目Vite配置代理解决跨域问题