laravel - 从 http 请求中获取参数
Posted
技术标签:
【中文标题】laravel - 从 http 请求中获取参数【英文标题】:laravel - get parameters from http request 【发布时间】:2015-11-01 19:13:44 【问题描述】:我想将多个参数从我的 Angular 应用程序传递到我的 Laravel API,即用户提供的 id
和 choices
数组。
角度:
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参数