首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >路由之进阶篇(五)

路由之进阶篇(五)

作者头像
大话swift
发布2019-10-16 16:07:53
3340
发布2019-10-16 16:07:53
举报
文章被收录于专栏:大话swift大话swift

这篇文章是路由的进阶篇,会教大家怎么实际运用路由

1、命名路由

路由结构如下

Route::get('/', 'IndexController@index');
Route::get('/register', 'IndexController@register')->name('register');
Route::group(['middleware' => ['auth']], function () {
    Route::post('/add', 'IndexController@add');
});

执行查看路由的命令,查看我们的路由,着重看红色线框部分,我们有了一个以register命名的路由

php artisan route:list
路由
路由

2、路由参数

路由结构如下

Route::get('/', 'IndexController@index');
Route::get('/register', 'IndexController@register')->name('register');
Route::get('/user/{name}', 'IndexController@user');
Route::group(['middleware' => ['auth']], function () {
    Route::post('/add', 'IndexController@add');
});

控制器代码如下

<?php

namespace App\Http\Controllers\Web;

use App\Http\Controllers\Controller;
use Illuminate\Http\Request;

class IndexController extends Controller
{
    //
    public function index()
    {
        return view('welcome');
    }

    public function add(Request $request)
    {
        return $request->all();
    }

    public function register()
    {

    }

    public function user($user)
    {
        return [$user];
    }
}

我们新定义了/user/{name}路由,这个路由有个参数name,同时我们在控制器的user方法中接口参数并返回,采用postman做测试,我们的请求地址http://127.0.0.1:8000/user/hanyun,你也可以http://127.0.0.1:8000/user/lilei,根据实际情况传递路由参数

3、路由可选参数

有的时候你想你的路由有个可选参数,没有的话给个默认值,例如

Route::get('/', 'IndexController@index');
Route::get('/register', 'IndexController@register')->name('register');
Route::get('/user/{name}', 'IndexController@user');
Route::get('/user/{name?}', 'IndexController@getUserByName');
Route::group(['middleware' => ['auth']], function () {
    Route::post('/add', 'IndexController@add');
});

控制器代码如下

<?php

namespace App\Http\Controllers\Web;

use App\Http\Controllers\Controller;
use Illuminate\Http\Request;

class IndexController extends Controller
{
    //
    public function index()
    {
        return view('welcome');
    }

    public function add(Request $request)
    {
        return $request->all();
    }

    public function register()
    {

    }

    public function user($user)
    {
        return [$user];
    }

    public function getUserByName($name='hanyun')
    {
        return [$name];
    }
}

使用postman模拟请求

在这个例子当中,我们定义了一个路由/user/{name?},这个name参数是可选的,一定不要忘记了后面的‘’?‘’。我们发现我们并没有给路由传递参数,但是依旧有个默认值返回。

4、正则路由

有的时候我们希望我们的路由参数受到约束,那么我们可以采用正则路由,约数路由参数。修改我们的代码 路由

Route::get('/', 'IndexController@index');
Route::get('/register', 'IndexController@register')->name('register');
Route::get('/user/{userId}', 'IndexController@getUseById')->where('userId', '[0-9]+');
Route::group(['middleware' => ['auth']], function () {
    Route::post('/add', 'IndexController@add');
});

控制器

<?php

namespace App\Http\Controllers\Web;

use App\Http\Controllers\Controller;
use Illuminate\Http\Request;

class IndexController extends Controller
{
    //
    public function index()
    {
        return view('welcome');
    }

    public function add(Request $request)
    {
        return $request->all();
    }

    public function register()
    {

    }

    public function getUseById($userId)
    {
        return [$userId,
        ];
    }
}

这里我们限制了我们的路由为数字,如果不是数字就会返回404页面,例如:/user/1,用postman请求

5、路由前缀

有时候我们想给路由增加前缀进行区分,我们可以给单个路由增加前缀,一个可以给路由组增加前缀,路由组下面所有的都会有一个公用的前缀

Route::get('/', 'IndexController@index');
Route::get('/register', 'IndexController@register')->name('register');
Route::prefix('prefix')->get('/user/{userId}', 'IndexController@getUseById')->where('userId', '[0-9]+');
Route::group(['middleware' => ['auth'], 'prefix' => 'group/prefix'], function () {
    Route::get('/user/{userId}', 'IndexController@getUseById')->where('userId', '[0-9]+');
});

执行命令

php artisan route:list
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-10-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 大话swift 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、命名路由
  • 2、路由参数
  • 3、路由可选参数
  • 4、正则路由
  • 5、路由前缀
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档