lumen-api-generator
Generates boilerplate for lumen REST API: migration, controller, model, request and route.
Generator creates Eloquent Models and use them in generated controllers. If you want to use this package you are encouraged to uncomment $app->withEloquent
in bootstrap/app.php
., (*1)
Installation
composer require --dev asmiarowski/lumen-api-generator
Add this to app\Providers\AppServiceProvider inside register() method:, (*2)
if ($this->app->environment() == 'local') {
$this->app->register('Smiarowski\Generators\GeneratorsServiceProvider');
}
Uncomment in `bootstrap/app.php` , (*3)
$app->register(App\Providers\AppServiceProvider::class);
For POST / PUT data to work you either have to send your request with Accept: application/json
header or set up json responses globally in app/Http/Requests/Request.php like so:, (*4)
/**
* Overwrite Laravel Request method because API is always returning json
* @return bool
*/
public function wantsJson()
{
return true;
}
Command syntax
php artisan make:api-resource <table_name> --schema="<column_name>:<column_type>(<arguments>):<option>(<arguments>); [...]" --softdeletes
Command options
--schema - required, schema of your migration, validators will be set based on fields and types specified., (*5)
--softdeletes - optional, add softDeletes() to migration, (*6)
Column types
http://laravel.com/docs/5.1/migrations#creating-columns, (*7)
Custom types
- email - puts string type column in your migration and email validation for your request, (*8)
Column options
foreign, index, unique, default, nullable, first, after, unsigned, (*9)
Example command
php artisan make:api-resource emails --schema="email:email:unique; title:string; body:text; status:integer:default(1); user_id:integer:foreign(users)" --softdeletes
Creates:, (*10)
app/Http/Controllers/EmailController.php, (*11)
app/Htpp/Requests/EmailRequest.php, (*12)
app/Email.php, (*13)
database/migrations/*timestamp*_create_emails_table.php, (*14)
And appends resource routes to app/routes.php with pattern for id of the resource., (*15)