Build Simple REST API with Laravel

Awang Trisakti
3 min readJan 14, 2022
Photo by Artur Shamsutdinov on Unsplash

REST (Representational State Transfer) is an architectural method of communication that uses HTTP protocol for data exchange. Application programming interface (API) is a connection between computers or between computer programs. It is a type of software interface, offering a service to other pieces of software. In short, API can make other applications, whether it’s a mobile apps or something else, can communicate with our application.

In this post I want to share how to create a REST API in Laravel with very simple way.

First create a new project or you can skip this if you already have one.

composer create-project laravel/laravel laravel-api --prefer-dist

Set up your database connection in the .env and then create migration for some table, in this I will use posts table as an example.

php artisan make:migration create_posts_table

In the posts migration file :

<?phpuse Illuminate\Database\Migrations\Migration;use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreatePostsTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('posts', function (Blueprint $table) {
$table->id();
$table->string('title');
$table->string('slug');
$table->string('body');
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('posts');
}
}

Run migrate with php artisan migrate command.

Create some models and controllers

php artisan model Post -c

Write all, show, store, update and destroy function in the controller, in the PostController will be something like this :

Add guarded or fillable property into Post model, because in the controller we use mass assignment.

protected $guarded = ['id'];

Modify the routes in api.php

use App\Http\Controllers\PostController;Route::group(['prefix'=>'post'], function () {
Route::get('/', [PostController::class, 'index']);
Route::get('/{id}', [PostController::class, 'show']);
Route::post('/', [PostController::class, 'store']);
Route::put('/{id}', [PostController::class, 'update']);
Route::delete('/{id}', [PostController::class, 'destroy']);
});

Test
We need application like postman or insomnia or something else for testing purpose. You can download postman from this link.

Get all posts data
Get specific post data
Store a new post data
Update specific post
Delete specific post data

Thats all that I can share in this post. Maybe in the next post I will share about API authentication in Laravel using passport.

Thanks for reading my post, please feel free to leave a comment if you have any suggestions or questions. See ya…

References
1. https://en.wikipedia.org/wiki/API

--

--