AliihsanSuna Bu özellik 5.6 ile geldi. php artisan --version
ile Laravel sürümünüzü öğrenebilirsiniz.
Eğer Laravel sürümünü güncelleme niyetiniz ya da imkanınız yoksa; API resource controller içerisinde resource controllerdan farklı olarak edit ve create yöntemleri yok sadece. Yani aslında bir tane resource controller oluşturup şu şekilde tanımlarsanız aynı şeyi yapmış oluyorsunuz:
Route::resource('products', 'ProductController')->only([
'index', 'show', 'store', 'update', 'destroy'
]);
İsterseniz bir tane Route macro yazarak da polyfill yapabilirsiniz. \App\Providers\AppServiceProvider::boot() içerisine:
Route::macro('apiResource', function ($name, $controller, array $options = []) {
$only = ['index', 'show', 'store', 'update', 'destroy'];
if (isset($options['except'])) {
$only = array_diff($only, (array) $options['except']);
}
return $this->resource($name, $controller, array_merge([
'only' => $only,
], $options));
});
Laravel 5.6+ daki gibi kullanabilirsiniz:
Route::apiResource('products', 'ProductController')
\Illuminate\Routing\Console\ControllerMakeCommand sınıfını genişleterek --api özelliğini make:controller komutuna da ekleyebilirsiniz ama o kadar ilerlemeye gerek olduğunu sanmıyorum. Resource controller oluşturup içinde edit ve create yöntemini silin gitsin.
Ayrıca kullanılan terminal ve ortama göre escape değişebileceği için slash karakterinin en doğru kullanımı şudur:
php artisan make:controller Api\\Admin\\ProductController --api