nevestul4o/network-controller is a Laravel package for a basic api controller set for laravel.
It currently has 1 GitHub stars and 368 downloads on Packagist (latest version v2.9.1).
Install it with composer require nevestul4o/network-controller.
Discover more Laravel packages by nevestul4o
or browse all Laravel packages to compare alternatives.
Last updated
A Laravel package that provides a powerful, convention-driven base API controller and model foundation for building RESTful endpoints quickly. It includes rich GET query capabilities (pagination, filtering, sorting, search, includes, aggregations), transformers via Fractal, file and image upload helpers, ready-made auth controllers, and more.
Install via Composer:
composer require nevestul4o/network-controller
The package ships with a publishable configuration file. Use:
php artisan vendor:publish --provider="Nevestul4o\NetworkController\NetworkControllerServiceProvider"
This will publish:
use App\Http\Controllers\Controller;
use Nevestul4o\NetworkController\NetworkController;
class APIEmployeeController extends NetworkController {}
In routes/api.php:
use App\Http\Controllers\APIEmployeeController;
use Illuminate\Support\Facades\Route;
Route::resource('employee', APIEmployeeController::class);
App\Http\Models (as expected by this package):namespace App\Http\Models;
use Nevestul4o\NetworkController\Models\BaseModel;
class Employee extends BaseModel
{
protected $fillable = ['first_name', 'last_name'];
}
Now you can call endpoints like GET /api/employee with rich query parameters (see reference below).
App\Http\Models.Read more and see examples: BaseModel — Examples.
Add these routes to routes/api.php:
use Nevestul4o\NetworkController\Controllers\ImagesController;
use Nevestul4o\NetworkController\Controllers\UploadController;
Route::get('images/{width}/{name}', [ImagesController::class, 'getImage'])->name('get-image');
Route::post('upload', [UploadController::class, 'uploadSubmit']);
Configure your .env:
UPLOADS_PATH=../uploads/files
IMAGES_PATH=../uploads/images
IMAGES_RESIZED_PATH=../cache/images
IMAGES_SUPPORTED_SIZES=300,600,900
IMAGES_REMOVE_METADATA=TRUE
Maintenance command to clear the resized image cache:
php artisan network-controller:images-clear-cache
User model under App\Http\Models extending BaseUser.App\Http\Models\User.UserTransformer under App\Http\Models\Transformers.Routes (add to routes/api.php):
use Nevestul4o\NetworkController\Controllers\Auth\LoginController;
use Nevestul4o\NetworkController\Controllers\Auth\ChangePasswordController;
Route::post('login', [LoginController::class, 'login'])->name('login');
Route::get('login', [LoginController::class, 'login'])->name('getCurrentUser');
Route::post('logout', [LoginController::class, 'logout'])->name('logout');
Route::post('change-password', [ChangePasswordController::class, 'changePassword'])->name('changePassword');
Route::post('change-password-forced', [ChangePasswordController::class, 'changePasswordForced'])->name('changePasswordForced');
Warning: changePasswordForced in ChangePasswordController is NOT secured. It can change a user's password without the current password. Protect the route appropriately or override the method.
For detailed documentation of the supported GET parameters (pagination, showMeta, sorting, filtering, search, resolve/includes, slugs, aggregations, and more), see:
These docs explain how to use parameters like page, limit, orderby, sort, filters, query, resolve, aggregate and how meta.route_info helps discover allowed values.
Issues and pull requests are welcome. Please follow the conventional code style and include tests where possible.
MIT