How to Create a REST API with Laravel Lumen

by Fahad Saleh  November 3, 2016

Lumen is a micro-framework built on top of Laravel. The framework is ideal for small apps and services that are optimized for speed. The most important application of the framework is to build REST APIs.

rest api with lumen

Why build a REST API in Lumen

  • Lumen is blazing fast.
  • It can handle more requests per second than Laravel.
  • It uses nikic/FastRoute instead of Symfony, thereby increasing performance.

To build a REST API with Lumen, launch a Cloudways server with a simple PHP app.

(Note: You may use promo code: PHP15 to get FREE Cloudways hosting credit of $15 on signup.)

php server cloudways


Note: If you want to use the Laravel Stack

Inside the Laravel public_html directory, run the following commands to create a Lumen app inside the Laravel project :

From here you have 3 options to update the webroot:

Symlink your Lumen public directory to the Laravel public directory.

OR update the webroot using the Cloudways Application Settings page.

OR move Lumen’s index.php inside the Laravel public directory and

update the bootstapp/app.php path.


Next, inside the app’s public_html folder, run the following command to create a Lumen project.

Change the webroot by adding /public  (this is the public folder for all Laravel apps) in the Cloudways Application Settings page so that the new webroot is now public_html/public.

Load up the application URL in the browser and you will see the following page.

lumen-5-3-0-laravel-components-5-3

MySQL connection

I will use MySQL for this tutorial. Update the DB credentials in the .env file using the MySQL ACCESS available on the Cloudways Application Page. The following fields should be updated:

Next, uncomment the following lines in bootstrap/app.php

The Facade class is a static interface to classes available in the application’s service containers. This class is required to access certain core components of Lumen. Eloquent is the ORM that is used  communicate with the MySQL database.

Migration

It is now time to create the database schema.

Create a table for Cars with four fields including the auto- increment id. The other three fields are make, model, and year. To create the table, run:

This will create a <date>_create_table_cars.php file inside the database/migrations/ folder. I will now edit this file and define the table.

Add the following code inside up function:

The up function will be triggered when the table is actually created during the migration. The down function (no changes required in this function) will delete the table if the need arises.

Now run the migration using:

At this point, the table has been created and can be viewed in MySQL manager.

mysql-manager-cloudways

The Model

Next step is the creation of the model. Create the app/Car.php file and add the following code:

The Controller

Create a controller inside the app/Http/Controllers/CarController.php.

The routes

Now all that remains is the addition of the routes. I will write routes for creating, updating, deleting and viewing cars.

Open up app/Http/routes.php and add the following routes.

Notice that I have grouped the routes together into a common api/v1 route.

Testing It Out

Now, test it all out using curl.

Creation

After adding several more records, the DB would look like:

cloudways-db-would-look-like

Updating

Next,I will update id = 1 to Toyota Supra 1999 (the previous valve was Toyota Camry 2016).

Deletion

Now, I will delete id = 1.

“Removed successfully.”

View

This is what the final data should look like:

As a final confirmation,I can verify the data using the Cloudways MySQL manager:

04-cloudways-mysql-manager

Conclusion

This article highlighted Lumen, a Laravel based micro framework that is optimized for REST API. I created the model, controller and the view for the CURL based app. The aim of this tutorial is to show how easy it is to create REST API with Lumen. If you have any problems following the code or would like to contribute to the discussion, please leave a comment below.

Start Creating Web Apps on Managed Cloud Servers Now!

Easy Web App Deployment for Agencies, Developers and E-Commerce Industry

About Fahad Saleh

Fahad Saleh is a DevOps Engineer at Cloudways

Stay Connected:

You Might Also Like...