asmiarowski / lumen-api-generator
Artisan generator for API reasource.
Requires
- php: >=5.5.0
- icanboogie/inflector: ^1.3
Requires (Dev)
- phpspec/phpspec: ~2.1
This package is not auto-updated.
Last update: 2024-11-21 01:04:22 UTC
README
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
.
Installation
``` composer require --dev asmiarowski/lumen-api-generator ```Add this to app\Providers\AppServiceProvider inside register() method:
``` if ($this->app->environment() == 'local') { $this->app->register('Smiarowski\Generators\GeneratorsServiceProvider'); } ```Uncomment in `bootstrap/app.php`
``` $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: ``` /** * Overwrite Laravel Request method because API is always returning json * @return bool */ public function wantsJson() { return true; } ```Command syntax
``` php artisan make:api-resource --schema=":():(); [...]" --softdeletes ```Command options
--schema - required, schema of your migration, validators will be set based on fields and types specified.
--softdeletes - optional, add softDeletes() to migration
Column types
http://laravel.com/docs/5.1/migrations#creating-columns
Custom types
- email - puts string type column in your migration and email validation for your request
Column options
foreign, index, unique, default, nullable, first, after, unsigned
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:
app/Http/Controllers/EmailController.php
app/Htpp/Requests/EmailRequest.php
app/Email.php
database/migrations/*timestamp*_create_emails_table.php
And appends resource routes to app/routes.php with pattern for id of the resource.