4/26/24, 8:16 PM Laravel 9 REST API CRUD Tutorial Example
Laravel 9 REST API CRUD Tutorial
Example
Laravel saim ansari September 12, 2023
In this section we will see laravel 9 rest api crud app. For
this tutorial we will create simple but clean laravel api
crud using Request for validation, Resource for showing
important & clean data. we will create simple but clean
architecture laravel 9 api crud application.
Note: Before we will start you should have php 8.x version
in your system. Because laravel 9 support php 8 & above
php version.
Step 1: Install Laravel & Connect Database
Installing a fresh new laravel 9 application, so head over
to the terminal, type the command, and create a new
laravel app.
composer create-project laravel/laravel crud
https://larainfo.com/blogs/laravel-9-rest-api-crud-tutorial-example 1/13
4/26/24, 8:16 PM Laravel 9 REST API CRUD Tutorial Example
Now, you have to connect the laravel app to the
database, hence open the .env configuration file and
add the database credentials as suggested below.
.env
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=database_name
DB_USERNAME=database_user_name
DB_PASSWORD=database_password
Step 2: Create Model Request and
Resource, Api Controller & route
Create Post Modal with migration
php artisan make:model Post -m
Create Post Request for validation
php artisan make:request StorePostRequest
Create Post Resource for show clean data
php artisan make:resource PostResource
Create Post Api controller
php artisan make:controller Api/PostController --mo
create_posts_table.php
https://larainfo.com/blogs/laravel-9-rest-api-crud-tutorial-example 2/13
4/26/24, 8:16 PM Laravel 9 REST API CRUD Tutorial Example
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('posts', function (Blueprint
$table->id();
$table->string('title');
$table->text('description');
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('posts');
}
};
app/Http/Models/Post.php
https://larainfo.com/blogs/laravel-9-rest-api-crud-tutorial-example 3/13
4/26/24, 8:16 PM Laravel 9 REST API CRUD Tutorial Example
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFacto
use Illuminate\Database\Eloquent\Model;
class Post extends Model
{
use HasFactory;
protected $fillable = ['title', 'description'];
}
app/Http/Requests/StorePostRequest.php
<?php
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
class StorePostRequest extends FormRequest
{
/**
* Determine if the user is authorized to make
*
* @return bool
*/
public function authorize()
{
return false;
}
/**
* Get the validation rules that apply to the r
*
* @return array
*/
public function rules()
{
return [
'title' => ['required', 'max:70'],
https://larainfo.com/blogs/laravel-9-rest-api-crud-tutorial-example 4/13
4/26/24, 8:16 PM Laravel 9 REST API CRUD Tutorial Example
'description' => ['required']
];
}
}
app/Http/Controllers/Api/PostController.php
<?php
namespace App\Http\Controllers\Api;
use App\Http\Controllers\Controller;
use App\Http\Requests\StorePostRequest;
use App\Http\Resources\PostResource;
use App\Models\Post;
use Illuminate\Http\Request;
class PostController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
$posts = Post::all();
return PostResource::collection($posts);
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
//
}
/**
https://larainfo.com/blogs/laravel-9-rest-api-crud-tutorial-example 5/13
4/26/24, 8:16 PM Laravel 9 REST API CRUD Tutorial Example
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(StorePostRequest $request
{
$posts = Post::create($request->all());
return new PostResource($posts);
}
/**
* Display the specified resource.
*
* @param \App\Models\Post $post
* @return \Illuminate\Http\Response
*/
public function show(Post $post)
{
//
}
/**
* Show the form for editing the specified reso
*
* @param \App\Models\Post $post
* @return \Illuminate\Http\Response
*/
public function edit(Post $post)
{
//
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param \App\Models\Post $post
* @return \Illuminate\Http\Response
*/
public function update(StorePostRequest $reques
{
$post->update($request->all());
https://larainfo.com/blogs/laravel-9-rest-api-crud-tutorial-example 6/13
4/26/24, 8:16 PM Laravel 9 REST API CRUD Tutorial Example
return new PostResource($post);
}
/**
* Remove the specified resource from storage.
*
* @param \App\Models\Post $post
* @return \Illuminate\Http\Response
*/
public function destroy(Post $post)
{
$post->delete();
return response(null, 204);
}
}
routes/api.php
<?php
use App\Http\Controllers\Api\PostController;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;
/*
|--------------------------------------------------
| API Routes
|--------------------------------------------------
|
| Here is where you can register API routes for you
| routes are loaded by the RouteServiceProvider wit
| is assigned the "api" middleware group. Enjoy bui
|
*/
Route::middleware('auth:sanctum')->get('/user', fun
return $request->user();
});
https://larainfo.com/blogs/laravel-9-rest-api-crud-tutorial-example 7/13
4/26/24, 8:16 PM Laravel 9 REST API CRUD Tutorial Example
Route::apiResource('posts',PostController::class);
run app
php artisan serve
Step 3: Test CRUD App in Postman API
POST
http://localhost:8000/api/posts
GET
http://localhost:8000/api/posts
https://larainfo.com/blogs/laravel-9-rest-api-crud-tutorial-example 8/13
4/26/24, 8:16 PM Laravel 9 REST API CRUD Tutorial Example
PUT
http://localhost:8000/api/posts/1
DELETE
http://localhost:8000/api/posts/1
https://larainfo.com/blogs/laravel-9-rest-api-crud-tutorial-example 9/13
4/26/24, 8:16 PM Laravel 9 REST API CRUD Tutorial Example
Read Also
Laravel 9 Add Simple Sidebar with Tailwind CSS Example
How to Use Carousel Slider in Laravel 9 Example
Laravel 9 Posts with Tags Many to Many Relationships
Example
Laravel 9 Insert Category in Posts CRUD Example
How to Use Ckeditor 5 in Laravel 9 Vite with Tailwind CSS
Laravel 9 Simple Image Upload in Ckeditor 5 Example
Laravel 9 Flash Message Timeout and Hide Message
Example
Install & Setup Markdown Editor in Laravel 9
Nuxt 3 Data Fetching Using Laravel 9 Api Example
Laravel 9 Image Upload with Preview using Tailwind CSS
& Alpine JS
Laravel 9 with Tailwind CSS Form Validation Example
Laravel 9 Backend Api Connect with Vue 3 Using Axios
Example
Laravel 9 Authentication with Next js Example
https://larainfo.com/blogs/laravel-9-rest-api-crud-tutorial-example 10/13
4/26/24, 8:16 PM Laravel 9 REST API CRUD Tutorial Example
Laravel 9 Sanctum Authentication with Nuxt JS Example
Laravel 9 Simple Search with Pagination Example
Laravel 9 Install Setup TALL(Tailwind, Alpinejs, Livewire)
Admin Panel
How to Fix and Clean Code Style in laravel 9
Laravel 9 Image File Upload Example
3 Way to Create Slug in Laravel 9 without Package
How to Add Dark Mode in Laravel 9 with Tailwind CSS
Tags: Laravel 9 Laravel Api
NEWSLETTER
Get updates right in your inbox. Join to get notified
with new tutorials
Enter email address
subscribe
Recent Blog
Create Cookie Consent Design UI Using Tailwind CSS
Tailwind CSS + Alpine.js Close Notifications Box
https://larainfo.com/blogs/laravel-9-rest-api-crud-tutorial-example 11/13
4/26/24, 8:16 PM Laravel 9 REST API CRUD Tutorial Example
How to Use background blur in Tailwind CSS
How to Use Font Border In Tailwind CSS
Catagories
React JS
Vue JS
Livewire
Tailwind CSS
Alpine Js
Free Tools
Pixel To Rem Converter Box Shadow Generator
The Larainfo website is dedicated to providing tutorials
on web languages and frameworks such as PHP, Laravel,
API, Livewire, Vue JS, React, and Tailwind CSS..
Quick Link
Home
Laravel
Tailwind CSS
Livewire
https://larainfo.com/blogs/laravel-9-rest-api-crud-tutorial-example 12/13
4/26/24, 8:16 PM Laravel 9 REST API CRUD Tutorial Example
Quick Link
About us
Disclaimer
Privacy Policy
Terms of use
Contact Us
https://larainfo.com/blogs/laravel-9-rest-api-crud-tutorial-example 13/13