[英]Laravel resource controllers for both API and non-API use
在为API执行AJAX调用的网站创建资源控制器PhotosController
之后,资源控制器似乎可以在普通网站和API上使用。
这将显示ID为1的Photo
的HTML页面
http://domain.com/photos/1
和Javascript使用以下更新Photo
资源并返回JSON响应
PUT http://domain.com/api/v1/photos/1
问题:我们是否有2个PhotoControllers
,一个用于处理API使用,一个用于非API?
不可以。您可以将两条不同的路线指向同一个控制器和操作。
Route::get('/photos/1', 'PhotoController@index');
Route::get('/api/v1/photos/1', 'PhotoController@index');
然后,在您的控制器方法中,您可以测试请求是否来自Ajax。
if (Request::ajax()) {
// Do some crazy Ajax thing
}
我使用带有API调用前缀的路由组:
Route::resource('venue', 'VenueController');
Route::group(array('prefix' => 'api'), function(){
Route::resource('venue', 'VenueController', array('only' => array('index', 'show')));
});
然后,在控制器中,我使用这个条件:
if (Route::getCurrentRoute()->getPrefix() == 'api') {
return Response::json($venues->toArray());
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.