繁体   English   中英

用于API和非API使用的Laravel资源控制器

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM