laravel - 从 http 请求中获取参数

2022-08-30 18:28:05

我想将多个参数从我的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
        }
    });

拉拉维尔 5:

路线.php:

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

ApiController.php:

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

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

如何提出此请求?


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


答案 1

Laravel 8 的更新:

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

前任

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

在控制器方法中,您可以使用 Request 实例并使用路由方法访问参数:

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

但是,如果您仍然想使用一些查询参数,则可以使用相同的请求实例,而只需使用查询方法

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

答案 2

更改此设置:

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

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

并获取值

echo $request->id;
echo $request->choices;

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


推荐