app http routes.php,HTTP路由实例教程(一)—— 基本使用及路由参数

1、路由基本使用示例

1.1 默认示例

Laravel中所有路由定义在/app/Http/routes.php文件中,该文件默认定义了应用的首页路由:

Route::get('/', function () {

return view('welcome');

});

这段代码的意思是:当访问应用首页http://laravel.app:8000(使用Homestead虚拟机作为开发环境)的时候,返回/resources/views/welcome.blade.php视图中的内容并渲染到浏览器页面中:

以上是应用自带的路由示例,下面我们来自定义一些示例来演示路由的基本使用。

1.2 GET请求路由定义

对页面常见的请求方式有GET和POST,上面这个例子就是使用GET路由的例子,接下里来我们自定义一个/hello请求:

Route::get('/hello',function(){

return "Hello Laravel[GET]!";

});

我们在浏览器中输入http://laravel.app:8000/hello,以上代码在浏览器中输出:

Hello Laravel[GET]!

1.3 POST请求路由示例

然后我们来演示一个POST请求的例子:

Route::get('/testPost',function(){

$csrf_token = csrf_token();

$form = <<

FORM;

return $form;

});

Route::post('/hello',function(){

return "Hello Laravel[POST]!";

});

首先我们定义一个/testPost页面用于提交POST请求表单,在http://laravel.app:8000/testPost页面点击“Test”按钮,页面跳转到http://laravel.app:8000/hello并显示:

Hello Laravel[POST]!

表明这是通过POST请求访问而非GET请求。

1.4 其它便捷路由定义

还可以使用Route门面上的match方法匹配多种请求方式:

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

return "Hello Laravel!";

});

当然还使用更方便的any方法匹配所有请求方式:

Route::any('/hello',function(){

return "Hello Laravel!";

});

效果都一样。

2、路由参数使用示例

2.1 必选参数

Route::get('/hello/{name}',function($name){

return "Hello {$name}!";

});

在浏览器中访问http://laravel.app:8000/hello/Laravel输出:

Hello Laravel!

当然还可以指定多个参数:

Route::get('/hello/{name}/by/{user}',function($name,$user){

return "Hello {$name} by {$user}!";

});

这样在浏览器中访问http://laravel.app:8000/hello/Laravel/by/Laravel学院则会输出:

Hello Laravel by Laravel学院!

注意以上参数是必选的,如果没有输入参数会抛出MethodNotAllowedHttpException或NotFoundHttpException异常。

此外闭包函数中的参数与路由参数一一对应。

2.2 可选参数

有时候我们并不总是想要输入对应参数,也就是说,我们期望参数是可有可无的,我们通过这种方式来定义:

Route::get('/hello/{name?}',function($name="Laravel"){

return "Hello {$name}!";

});

我们同时为可选参数指定了默认值,这样当我们访问http://laravel.app:8000/hello时输出:

Hello Laravel!

当我们访问http://laravel.app:8000/hello/Laravel学院的时候输出:

Hello Laravel学院!

2.3 正则约束

有时候我们希望对路由有更加灵活的条件约束,可以通过正则表达式来实现:

Route::get('/hello/{name?}',function($name="Laravel"){

return "Hello {$name}!";

})->where('name','[A-Za-z]+');

该条件约束意味着$name参数只能包含大小写字母,如果包含数字或中文就会抛出NotFoundHttpException异常。

如果我们想要在全局范围内对参数进行条件约束,可以在RouteServiceProvider的boot方法中做如下定义:

public function boot(Router $router)

{

$router->pattern('name','[A-Za-z]+');

parent::boot($router);

}

我们访问http://laravel.app:8000/hello/Laravel123/by/Laravel学院时一样会抛出NotFoundHttpException异常。这意味着boot方法定义的参数条件约束将会应用到所有包含该参数的路由中。

此外,服务提供者的boot方法在所有服务提供者的register方法执行完毕后开始执行,也就是说,我们可以在boot方法对任意服务容器中的对象进行依赖注入。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要将 `el-menu-item` 组件中的路由跳转与 `routes.js` 关联起来,你需要在 `routes.js` 中定义对应的路由。下面是一个示例代码: ```javascript import Home from '@/views/Home.vue' import User from '@/views/User.vue' const routes = [ { path: '/home', name: 'Home', component: Home }, { path: '/user', name: 'User', component: User } ] export default routes ``` 在这个示例中,我们定义了两个路由,分别对应 `/home` 和 `/user` 路径,对应的组件分别是 `Home` 和 `User`。 然后,在你的 `App.vue` 中,你需要使用 `router-view` 组件来渲染路由组件。下面是一个示例代码: ```html <template> <div id="app"> <el-menu :default-active="$route.path" mode="horizontal"> <el-menu-item index="/home"> <router-link to="/home">Home</router-link> </el-menu-item> <el-menu-item index="/user"> <router-link :to="{ path: '/user', query: { id: 123 } }">User</router-link> </el-menu-item> </el-menu> <router-view></router-view> </div> </template> ``` 在这个示例中,我们在 `el-menu-item` 组件中使用 `router-link` 来实现路由跳转,并将目标路由设置为 `/home` 和 `/user`。同时,在 `el-menu` 组件中,我们将 `default-active` 属性设置为 `$route.path`,以保证在刷新页面时菜单项的选中状态不会丢失。 最后,在 `main.js` 中,你需要引入 Vue Router 并将其配置到 Vue.js 应用程序中。下面是一个示例代码: ```javascript import Vue from 'vue' import App from './App.vue' import router from './router' Vue.config.productionTip = false new Vue({ router, render: h => h(App), }).$mount('#app') ``` 在这个示例中,我们将 `router` 对象引入并作为选项传递给 Vue.js 的根实例。这样,你就可以在应用程序中使用路由了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值