我正在为我的Laravel项目创建一个API。我已将我的API身份验证直接包含在我的route.php文件中。验证通过后,我希望能够将$ api参数传递给控制器本身以供使用。正如您将在下面看到的那样,在我的Route:post调用之后附加了 - > with()但是失败了。如何将$ api传递给我的控件?
提前致谢!
Route::group(array('prefix' => 'api/1.0.0'), function()
{
$api = Api::checkCredentials(Input::get('username'), Input::get('api_key'));
if($api)
{
Route::post('beacons/fetch', 'ApiController@fetchBeacons')->with('api', $api);
}
else
{
return Response::json(array(
'error' => true,
'output' => 'Invalid API credentials'),
200
);
}
});
答案 0 :(得分:0)
您可以使用before
过滤器,例如:
Route::group(array('prefix' => 'api/1.0.0'), function()
{
Route::post(
'beacons/fetch',
array('before' => 'checkUser', 'uses' => 'ApiController@fetchBeacons')
);
});
声明将在checkUser
发送之前执行的route
过滤器:
Route::filter('checkUser', function($route, $request) {
$inputs = Input::only(array('username', 'api_key'));
$api = app('Api')->checkCredentials($inputs);
if(!$api) {
return Response::json(array(
'error' => true,
'output' => 'Invalid API credentials'),
200
);
}
else {
Input::merge(array('api' => $api));
}
});
现在,您可以使用以下命令访问控制器中的api
:
$api = Input::get('api');