crystoline / laravel-rest-api
Laravel Rest Api Library. Write produce rest apis very fast
v2.0.0
2022-02-15 14:35 UTC
Requires
- php: >=7.0
- illuminate/database: ^5.8|^6.0|^7.0|^8.0
- illuminate/support: ^5.8|^6.0|^7.0|^8.0
Requires (Dev)
- phpunit/phpunit: 4.8.*
README
laravel-rest-api
Description
Provide rest apis in Laravel in easy steps. Avoid Repeated crud/Bread Process. This helps you to focus on the business logic
Installation
composer require crystoline/laravel-rest-api
##Usage
Controller Sample
<?php namespace App\Http\Controllers; use Crystoline\LaraRestApi\RestApiTrait; use Crystoline\LaraRestApi\IRestApiAble; use Crystoline\LaraRestApi\TestModel; class TestController extends Controller implements IRestApiAble { use RestApiTrait; /** * Define the Eloquent Model. * This line is required. */ public static function getModel() : string { return TestModel::class; } public static function getValidationRules(): array { return [ "name" => "required", "email" => "required|email", "password" => "required|password_confirmed" ]; } }
Route Sample
<?php Route::prefix('users')->group( function () { Route::get('', 'TestController@index'); Route::get('show/{id}', 'TestController@show'); Route::post('store', 'TestController@store'); Route::put('update/{id}', 'TestController@update'); Route::put('delete/{id}', 'TestController@destroy'); });
or
<?php Route::resource('users', 'TestController');
Filter
You can add filter for the list method
<?php namespace App\Http\Controllers; use Crystoline\LaraRestApi\RestApiTrait; use Crystoline\LaraRestApi\IRestApiAble; use Crystoline\LaraRestApi\TestModel; use Illuminate\Http\Request; class TestController2 extends Controller implements IRestApiAble { use RestApiTrait; /** * Define the Eloquent Model. * This line is required. */ public static function getModel() : string { return TestModel::class; } public static function filter(Request $request, $query) { if($request->input('user_id')){ $user_id = $request->input('user_id'); $query->where(user_id, $user_id); } } }
Search
Search has been provided by default, pass search query in query/post parameter ('search'')
<?php namespace App\Http\Controllers; use Crystoline\LaraRestApi\RestApiTrait; use Crystoline\LaraRestApi\IRestApiAble; use Crystoline\LaraRestApi\TestModel; use Illuminate\Http\Request; class TestController3 extends Controller implements IRestApiAble { use RestApiTrait; /** * Define the Eloquent Model. * This line is required. */ public static function getModel() : string { return TestModel::class; } public static function searchable(): array { return [ 'last_name', 'first_name' ]; } }
Sorting
<?php namespace App\Http\Controllers; use Crystoline\LaraRestApi\RestApiTrait; use Crystoline\LaraRestApi\IRestApiAble; use Crystoline\LaraRestApi\TestModel; use Illuminate\Http\Request; class TestController4 extends Controller implements IRestApiAble { use RestApiTrait; /** * Define the Eloquent Model. * This line is required. */ public static function getModel() : string { return TestModel::class; } public static function orderBy(): array { return [ 'last_name' => 'ASC' ]; } }
Events
You add events before and after controller action. beforeList,afterList, beforeStore, afterStore, beforeShow, afterShow etc.
<?php namespace App\Http\Controllers; use Crystoline\LaraRestApi\RestApiTrait; use Crystoline\LaraRestApi\IRestApiAble; use Crystoline\LaraRestApi\TestModel; use Illuminate\Http\Request; class TestController5 extends Controller implements IRestApiAble { use RestApiTrait; /** * Define the Eloquent Model. * This line is required. */ public static function getModel() : string { return TestModel::class; } public function beforeStore(Request $request): bool { $password = $request->input('password'); if(!empty($password)) { $request->merge(['password' => bcrypt($password)]); return true; } return false; } }