PHP - Laravel 接口请求参数获取(多种方式)

一、简介
  • 在之前路由中配置路由参数,但它并不适合带大量的请求数据。

    Route::get('req/{参数名称}', function ($参数名称) {
        return 'Get 请求';
    });
    
  • 通常会在请求链接尾部带上参数,例如:http://www.dzm.com:8088/req?id=10&name=dzm? 后面附带的参数。

  • Laravel 提供了多种获取数据的方式。

二、方式一:Input
  • 通过 Input 类来获取数据(use Illuminate\Support\Facades\Input;),这里只列一些常用的。

    // 获取指定参数,并当没传该参数时附带默认值
    Input::get('参数名称', '默认值(当参数没传时生效)');
    
    // 获取所有的用户的输入
    Input::all();
    
    // 获取指定指定参数
    Input::only(['参数名称']);
    
    // 获取除指定指定参数以外的所有参数
    Input::except(['参数名称']);
    
    // 判断是否存在指定参数
    Input::has('参数名称');
    
    ....
    
  • 例如:获取接口中的 id 字段,如果没有默认为 0

    // 例如:http://www.dzm.com:8088/req?id=10
    Route::get('req', function () {
        return Input::get('id', 0);
    });
    
    或者控制器中使用:
    
    public function index() {
      // 可以使用 Input
      return Input::has('id') ? '存在' : '不存在';
    }
    
  • Input 使用注意:

    // 这种写法是错误的,默认带过来的是 Request 对象,而不是 Input
    Route::get('req', function (Input $input)) {
        return $input->get('id', 0);
    });
    
    // 这种写法是正确的,控制器中使用也是一样需要注意这点
    Route::get('req', function (Request $request)) {
        return $request->get('id', 0);
    });
    
三、方式二:Request
  • 通过 Request 类来获取数据(use Illuminate\Http\Request),这里只列一些常用的。

    // 获取指定参数,并当没传该参数时附带默认值
    Request::get('参数名称', '默认值(当参数没传时生效)');
      
    // 获取所有的用户的输入
    Request::all();
    
    // 获取指定指定参数
    Request::only(['参数名称']);
    
    // 获取除指定指定参数以外的所有参数
    Request::except(['参数名称']);
    
    // 判断是否存在指定参数
    Request::has('参数名称');
    
    // 判断请求类型(当一个接口支持多种请求方式的时候可以进行判断)
    Request::isMethod('请求方式(get、post、put ...)');
    
    ....
    
  • web.php 中使用:

    // 使用 Request:: 不能导入 use Illuminate\Http\Request;
    Route::get('req', function () {
        return Request::has('id') ? '存在' : '不存在';
    });
    
    // 使用 $request 必须导入 use Illuminate\Http\Request;
    Route::get('req', function (Request $request) {
       return $request->has('id') ? '存在' : '不存在';
    });
    
  • 控制器(例如:LoginController.php) 中使用:

    <?php
    
    namespace App\Http\Controllers;
    
    use Illuminate\Http\Request;
    use Illuminate\Support\Facades\Input;
    
    class LoginController extends Controller
    {
        // 登录
        public function index(Request $request) {
            // 不能使用 Request:: 会报错,控制器方法中只能使用 $request
            // return Request::has('id') ? '存在' : '不存在';
    
            // 可以使用 Input::
            // return Input::has('id') ? '存在' : '不存在';
    
            // 每个路由对象都会有 $request 对象
            return $request->has('id') ? '存在' : '不存在';
        }
    }
    
  • 路由参数 - 细节注意

    // 如果不需要使用 $request,且有路由参数
    Route::get('req/{tag?}', function ($tag = '') {
        return $tag;
    });
    
    // 如果需要使用 $request,且有路由参数
    Route::get('req/{tag?}', function (Request $request, $tag = '') {
        // return $request->has('id') ? '存在' : '不存在';
        return $tag;
    });
    
四、方式三:request()
  • request() 辅助函数方式获取,不需要导入任何库或者命名空间,直接使用。

    request() 函数返回的就是 Request 类对象,所以他两的可用方法是一致的。

    // 获取指定参数,并当没传该参数时附带默认值
    request()->get('参数名称', '默认值(当参数没传时生效)');
      
    // 获取所有的用户的输入
    request()->all();
    
    // 获取指定指定参数
    request()->only(['参数名称']);
    
    // 获取除指定指定参数以外的所有参数
    request()->except(['参数名称']);
    
    // 判断是否存在指定参数
    request()->has('参数名称');
    
    // 判断请求类型(当一个接口支持多种请求方式的时候可以进行判断)
    request()->isMethod('请求方式(get、post、put ...)');
    
    ....
    
  • 如果需要这个对象更多的可用方法,可以输出该对象的所有可用方法。

    dump(get_class_methods(request()));
    
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

卡尔特斯

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值