Laravel resource controllers for both API and non-API use

laravel, laravel-4, php, restful-url

Solution

No. You can have two separate routes point to the same controller and action.

Route::get('/photos/1', 'PhotoController@index');
Route::get('/api/v1/photos/1', 'PhotoController@index');

Then, in your controller methods, you can test whether the request is from Ajax or not.

if (Request::ajax()) {
    // Do some crazy Ajax thing
}

Problem

After creating a resource controller `PhotosController` for a website that also does AJAX calls to the API, it appears that the resource controller can be used on both the normal website and as the API. This displays a HTML page for `Photo` with id = 1 ``` http://domain.com/photos/1 ``` and Javascript uses the following which updates the `Photo` resource and returns a JSON response ``` PUT http://domain.com/api/v1/photos/1 ``` Question: Will we have 2 `PhotoControllers`, one to handle API usage and one for non-API?

Original source