laravel - 从http请求中获取参数

时间:2015-08-09 23:55:18

标签: php angularjs http laravel-5

我想将我的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是数字,选项是一个选择数组)。

我该如何提出这个要求?

  

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

2 个答案:

答案 0 :(得分:4)

改变这个:

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

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

使用

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

在您的控制器中。您无需指定接收参数,当您向方法中注入$request时,这些参数都会显示在Request中。

答案 1 :(得分:2)

Laravel 8 更新:

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

EX

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
}