Next article

The tech industry has an insatiable appetite for the ability to look beyond what one could ever imagine. As these technologies continue to escalate, the...

Micro framework of Laravel – Lumen

A lightweight version of Laravel full-stack framework named as Lumen micro-framework, is introduced to strip down loading speed. Lumen is for tasks and parts that can profit by the ease and energy of Laravel, however, can bear to forfeit some configurability and adaptability in return for a speed support.

It is effortless to update to Laravel Development services anytime while working in Lumen.

Installing Lumen

Install composer and change directory to server root folder.

Create a lumen project “lumen_api” from “laravel/lumen” package (

Composer will create a folder “lumen_api” and install all files of lumen including dependency.

Check all artisan command available in Lumen by

Now, run Lumen on your local server and open localhost:8000 in your browser.

If below screen is visible, then Lumen is successfully installed.


Create a database in mysql and replace the credential “lumen_api /.env.example” file to “lumen_rest_ce/.env


Open “lumen_api/bootstrap/app.php” and uncomment following snippet



Create table “templates” containing total 4 columns, namely id (int & auto incremented), title ( varchar), createdby (varchar), created_at (timestamp) and updated_at (timestamp).

In terminal/command prompt write:

It will create a migration file under “database/migration”.

Open the file, it will be seen that “CreateTempatesTable” class has been created. This class has two method one is “up” where table schema can be written and another is “down”, where table will be dropped which will be called at the time of rollback.

Now edit this migration file like this:

use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
 class CreateTemplatesTable extends Migration {
    public function up()
        Schema::create('templates', function(Blueprint $table)
    public function down()

To create the table in database, migrate or run migration file:

Thereby, table will be created.


Create a Template model under “app/Template.php” and use template table instance.

namespace App;  
use Illuminate\Database\Eloquent\Model;  
class Template extends Model
    protected $fillable = ['title', 'createdby'];     

Even, create a TemplateController.php under “app/Http/Controllers”

namespace App\Http\Controllers;
use App\Template;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
class TemplateController extends Controller{


Even mention some more routes and corresponding Controller method to create RESTful API.

GEThttp://localhost:8000/api/templateTemplateController@indexAll Templates
GEThttp://localhost:8000/api/template/{id}TemplateController@getTemplateFetch Template By id
POSThttp://localhost:8000/api/templateTemplateController@createTemplateCreate a template record
PUThttp://localhost:8000/api/template/{id}TemplateController@updateTemplateUpdate Template By id
DELETEhttp://localhost:8000/api/template/{id}TemplateController@deleteTemplateDelete Template By id

Open “routes/web.php”, and add routes as below. It is required to run the APIs.

$router->get('/', function () use ($router) {
 return $router->app->version();
$router->get('api/template', ['as' => 'template', 'uses' => 'TemplateController@index']);
$router->get('api/template/{id}', ['as' => 'template', 'uses' => 'TemplateController@gettemplate']);
$router->post('api/template', ['as' => 'template', 'uses' => 'TemplateController@createTemplate']);
$router->put('api/template/{id}', ['as' => 'template', 'uses' => 'TemplateController@updateTemplate']);
$router->delete('api/template/{id}', ['as' => 'template', 'uses' => 'TemplateController@deleteTemplate']);


Edit TemplateController.php and according to routes implement those methods.

A demo for Modified TemplateController.php

namespace App\Http\Controllers; 
use App\Template; 
use App\Http\Controllers\Controller; 
use Illuminate\Http\Request; 
class TemplateController extends Controller{ public function index(){ $Templates = Template::all(); return response()->json($Templates);
    public function getTemplate($id){
        $Template = Template::find($id);
        return response()->json($Template);
    public function createTemplate(Request $request){
        $Template = Template::create($request->all());
        return response()->json($Template);
    public function deleteTemplate ($id){
        $Template= Template::find($id);
        return response()->json('deleted');
    public function updateTemplate (Request $request,$id){
        $Template = Template::find($id);
        $Template->title = $request->input('title');
        $Template->author = $request->input('createdby');
        return response()->json($Template);


By using chrome extension POSTMAN, APIs can be tested easily. User needs to provide API URL, Method, required parameters as input, to which POSTMAN will show API response as output.

Wrapping Up

Lumen can be considered under Laravel Development services, which is particularly to strip down-speed of the site. It neither interrupts views and sessions nor other consumer-facing conveniences. It is just optimized for speedy microservices. Whether to use a full-stack structure like Laravel or a microframework like Lumen, it purely relies on programming necessities and Laravel developers ability and expertise.


  • Leave a message...