意见箱
恒创运营部门将仔细参阅您的意见和建议,必要时将通过预留邮箱与您保持联络。感谢您的支持!
意见/建议
提交建议

Laravel框架中路由文件在哪里,怎么定义路由

来源:恒创科技 编辑:恒创科技编辑部
2024-01-04 23:45:59
在这篇文章中,我们来学习一下“Laravel框架中路由文件在哪里,怎么定义路由”的相关知识,下文有详细的讲解,易于大家学习和理解,有需要的朋友可以借鉴参考,下面就请大家跟着小编的思路一起来学习一下吧。

   


Laravel框架中路由文件在哪里,怎么定义路由

laravel路由文件在“routes”目录里。Laravel中所有的路由文件定义在routes目录下,它里面的内容会自动被框架加载;该目录下默认有四个路由文件用于给不同的入口使用:web.php、api.php、console.php等。

本教程操作环境:windows7系统、Laravel6版,DELL G3电脑。

在 Laravel 中要简单地定义一个路由非常方便,传递一个 URI 和闭包即可。

Route::get('foo', function () {
    return 'Hello World';
})

Laravel 中所有的路由定义在 routes 目录下,这个目录下的内容会自动被框架加载。 routes 目录中默认有四个路由文件用于给不同的入口使用:web.php、api.php、 console.php 和 channels.php。

web.php 文件包含的路由都位于 RouteServiceProvider 所定义的 web 中间件组约束之内,因而支持 Session、CSRF 保护以及 Cookie 加密功能,如果应用无需提供无状态的、RESTful 风格的 API,那么路由基本上都要定义在 web.php 文件中。

api.php 文件包含的路由位于 api 中间件组约束之内,支持频率限制功能,这些路由是无状态的,所以请求通过这些路由进入应用需要通过 token 进行认证并且不能访问 Session 状态。

console.php 文件用于定义所有基于闭包的控制台命令,每个闭包都被绑定到一个控制台命令并且允许与命令行 IO 方法进行交互,尽管这个文件并不定义 HTTP 路由,但是它定义了基于控制台的应用入口(路由)。

channels.php 文件用于注册应用支持的所有事件广播频道。

许多项目,基本上都是以 routes/web.php 为起点进行开发的,它能实现快速开发一个项目的需要。在 routes/web.php 中定义的路由在浏览器中是可以直接访问到的。例如,在浏览器中输入 http://your-app.dev/user 地址来访问下面的路由:

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

定义在 routes/api.php 中的路由被嵌套在了一个路由组里,这是在 RouteServiceProvider 中设定的。这个组里的路由都使用了 /api 这个 URI 前缀,这样在你定义路由的时候,就不必再手动添加这个前缀了。如果你不想使用 /api 这个前缀的话,那么可以在 RouteServiceProvider 中修改。

/**
 * 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'));
}

可用的路由方法

每一个 HTTP 请求类型都有对应的路由方法可供使用:

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

有时一个路由需要能够匹配多个请求类型,这时可以用 match 方法。

Route::match(['get', 'post'], '/', function () {
    //
});

如果希望一个路由能够匹配所有请求类型的话,使用 any 方法:

Route::any('foo', function () {
    //
});

CSRF 保护

使用 Route::post、Route::put、Route::patch 和 Route::delete 定义的路由,要求访问它们的 HTML 表单都要传递一个 CSRF token,否则请求会被拒绝。你可以在 CSRF 文档里阅读更多这方面的内容。

<form method="POST" action="/profile">
    {{ csrf_field() }}
    ...
</form>

重定向路由

如果你要将一个路由重定向到另一个路由,可以使用 Route::redirect 方法。这就节省定义一个完整路由或者控制器来操作简单的重定向带来的一些麻烦:

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

视图路由

如果你只是要简单返回一个视图,可以使用 Route::view 方法,类似 Route::redirect 方法,也节省了一些麻烦。view 方法的第一个参数是 URI,第二个参数是视图名。另外,也可以使用可选的第三个数组类型参数向视图传递数据:

Route::view('/welcome', 'welcome');
Route::view('/welcome', 'welcome', ['name' => 'Taylor']);

到此这篇关于“Laravel框架中路由文件在哪里,怎么定义路由”的文章就介绍到这了,更多相关Laravel框架中路由文件在哪里,怎么定义路由内容,欢迎关注恒创科技技术资讯频道,小编将为大家输出更多高质量的实用文章!
上一篇: Laravel路由有何作用,路由类型有几种 下一篇: Laravel中Model模型关联关系有哪些,怎么建立关系