【问题标题】:laravel - get parameters from http requestlaravel - 从 http 请求中获取参数
【发布时间】:2015-11-01 19:13:44
【问题描述】:

我想将多个参数从我的 Angular 应用程序传递到我的 Laravel API,即用户提供的 idchoices 数组。

角度:

http 请求:

verifyAnswer: function(params) {
    return $http({
        method: 'GET',
        url: 'http://localhost:8888/api/questions/check',
        cache: true,
        params: {
            id: params.question_id,
            choices: params.answer_choices
        }
    });

Laravel 5:

routes.php:

$router->get('/api/questions/check/(:any)', 'ApiController@getAnswer');

ApiController.php:

public function getAnswer(Request $request) {
    die(print_r($request));
}

我认为我应该在我的 URI 中使用 :any 来表示我将传入任意数量的各种数据结构的参数(id 是一个数字,choices 是一个选择数组)。

我该如何提出这个请求?


[200]:/api/questions/check?choices=choice+1 &choices=choice+2 &choices=choice+3 &id=1

【问题讨论】:

    标签: php angularjs http laravel-5


    【解决方案1】:

    改变这个:

    $router->get('/api/questions/check/(:any)', 'ApiController@getAnswer');
    

    $router->get('/api/questions/check', 'ApiController@getAnswer');
    

    并使用

    获取值
    echo $request->id;
    echo $request->choices;
    

    在您的控制器中。无需指定您将接收参数,当您将Request 注入您的方法时,它们都将在$request 中。

    【讨论】:

    • 顺便说一句,见上面的编辑。它使用选项数组中的每个参数作为其自己的 URI 参数发出请求。反正有没有通过数组并在 Laravel 中循环遍历它?我想要做的是通过 ID 获取问题,遍历用户选择,并检查选择是否匹配。
    • 应该是一个数组,不是吗? @咆哮者
    • 您也可以使用输入法以关联数组的形式检索所有输入数据:print_r($request->input());
    • 我不得不不同意。从技术方面来说,你可以做到这一点——但我不确定你在可维护性/可读性方面的损失是否值得。如果您有一个大型代码库,而另一个开发人员想要快速扫描路由文件以查看 URL 接受的参数怎么办?
    【解决方案2】:

    Laravel 8 更新:

    有时您可能希望在不使用查询字符串的情况下传递参数。

    Route::get('/accounts/{accountId}', [AccountsController::class, 'showById'])
    

    在您的控制器方法中,您可以使用请求实例并使用路由方法访问参数,如下所示:

    public function showById (Request $request)
    {
      $account_id = $request->route('accountId')
      
      //more logic here
    }
    

    但是如果您仍然想使用一些查询参数,那么您可以使用相同的 Request 实例并只使用查询方法

    Endpoint: https://yoururl.com/foo?accountId=4490
    
     public function showById (Request $request)
    {
      $account_id = $request->query('accountId');
      
      //more logic here
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-08-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-02
      • 1970-01-01
      • 2021-06-04
      • 1970-01-01
      相关资源
      最近更新 更多