PHP - Laravel 路由使用(详细案例)

PHP 同时被 2 个专栏收录
49 篇文章 0 订阅
33 篇文章 2 订阅

根据 PHP - Laravel 创建项目到服务器(nginx、apache)运行(附带目录结构) 已经搭建好环境。

一、什么是路由?

  • 将用户的请求按照事先规划的方案提交给指定的控制器和方法来进行处理。

  • 路由配置文件:routes/web.php

二、四种基础路由的定义(重点

  • 路由模板

    // 路由样式
    Route::请求方式('url', 匿名函数);
    Route::请求方式('url', '控制器名称@操作方法');
    Route::请求方式('url', '命令空间\控制器名称@操作方法');
    
    // 路由中 url 前面的斜杠可写可不写
    Route::请求方式('/url', 匿名函数);
    
    ① 从服务器取出资源(一项或多项) select
    Route::get($uri, $callback);
    
    ② 在服务器新建一个资源 insert
    Route::post($uri, $callback);
    
    ③ 在服务器更新资源 update
    Route::put/patch($uri, $callback);
    
    ④ 从服务器删除资源 delete
    Route::delete($uri, $callback);
    
    4 种基础路由中,只有 GET 请求方式不进行 CSRF 验证,其它请求方式则需要 CSRF 验证
    

  • 路由例子(一)

  • 每个路由都是一种请求方式

    // get 请求,它没有 CSRF 验证
    Route::get('/get', function () {
        return 'get请求';
    });
    
    // 下面的都需要 CSRF 验证
    // post 请求
    Route::post('/post', function () {
        return 'post请求';
    });
    // put/patch 请求
    Route::put('/put', function () {
        return 'put请求';
    });
    // delete 请求
    Route::delete('/delete', function () {
        return 'delete请求';
    });
    
  • 例子效果 - 通过网站打开

    • Get 请求,没有 CSRF 验证

    • Post 请求走 Postman,浏览器默认为 Get 请求。

  • 例子效果 - Postman:

    • Get 请求,没有 CSRF 验证

    • Post 请求,报 419 错误,后面几种请求都需要 CSRF 验证,往后看解决方案。


  • 路由例子(二)

  • 一个路由支持多种请求方式

    // get 请求,它没有 CSRF 验证
    Route::get('/req', function () {
        return 'get请求';
    });
    
    // 下面的都需要 CSRF 验证
    // post 请求
    Route::post('/req', function () {
        return 'post请求';
    });
    // put/patch 请求
    Route::put('/req', function () {
        return 'put请求';
    });
    // delete 请求
    Route::delete('/req', function () {
        return 'delete请求';
    });
    
    • 例子效果 - 通过网站打开

    • Get 请求

  • 例子效果 - Postman:

    • Get 请求,没有 CSRF 验证

    • Post 请求,报 419 错误,后面几种请求都需要 CSRF 验证,往后看解决方案。


  • 解决路由例子 CSRF 验证问题

  • PHP - Laravel CSRF 介绍与用法(及取消 CSRF 验证)

  • 找到 app/Http/Middleware/VerifyCsrfToken.php 文件中的 $except 字段,添加不需要进行 CSRF 验证的路由:

    protected $except = [
      // 把想排除的路由规则卸载此数组中
      // 将下面路由的规则不进行 CSRF 验证
      '/post',
      '/req'
    ];
    
  • 再次尝试请求

三、match 配置路由(重点

  • 单个路由配置多个请求类型

    // match 支持一次性填写多个请求类型
    Route::match(['get', 'post'], '/req', function () {
        // return 'match 路由定义';
        dump($_SERVER);
    });
    
  • 例子效果 - Postman:

四、any 配置路由(实际工作中不推荐使用

  • 单个路由自适应支持所有请求

    // match 支持一次性填写多个请求类型,工作中不推荐使用这种
    Route::any('/req', function () {
        // return 'any 路由定义';
        dump($_SERVER);
    });
    
  • 例子效果 - Postman:

五、路由别名

六、路由分组 - 路由前缀

七、控制器创建(关联路由、路由命名空间分组)

八、路由参数

九、接口请求参数获取(多种方式)

十、接口请求返回 JSON 数据

十一、路由(接口)重定向

十二、查看自定义路由列表 (php artisan route:list)

  • 0
    点赞
  • 0
    评论
  • 2
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 游动-白 设计师:白松林 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值