我想将我的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是数字,选项是一个选择数组)。
我该如何提出这个要求?
[200]:/ api / questions / check?choices = choice + 1& choices = choice + 2& choices = choice + 3& id = 1
答案 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
}