laravel - 从 http 请求中获取参数

Posted

技术标签:

【中文标题】laravel - 从 http 请求中获取参数【英文标题】:laravel - get parameters from http request 【发布时间】: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

【问题讨论】:

【参考方案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

【讨论】:

以上是关于laravel - 从 http 请求中获取参数的主要内容,如果未能解决你的问题,请参考以下文章

laravel-4-laravel请求参数和路由参数,以及获取参数

Vuejs Axios POST 请求从 Laravel 后端获取 HTTP422 错误

如何从 HttpURLConnection 实例获取 HTTP 请求字符串

jmeter,BeanShell PreProcessor简单使用引入jmeter参数

如何在 laravel 中使用不记名令牌从 api 请求中获取响应?

使用 vuejs 和 laravel 在 URL 中传递参数