Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Laravel resource controllers for both API and non-API use

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?

like image 670
Nyxynyx Avatar asked Mar 24 '23 00:03

Nyxynyx


1 Answers

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
}
like image 200
searsaw Avatar answered Apr 02 '23 00:04

searsaw