Introduction
Laravel is one of the most popular PHP frameworks for web development. It offers robust tools for building scalable applications. One of its key features is the ability to create RESTful APIs efficiently. In this Laravel tutorial, we will explore how to build a RESTful API in Laravel 11. We will cover topics such as API authentication, API resources, and best practices for Laravel API development.
What is a RESTful API?
A RESTful API (Representational State Transfer API) follows REST principles. It allows clients to interact with a server using HTTP methods such as GET
, POST
, PUT
, and DELETE
. Laravel simplifies API development by providing built-in tools for routing, authentication, and API testing. Consequently, developers can build APIs faster and with better structure.

Setting Up a Laravel 11 Project
Before we start building our Laravel API, make sure you have Laravel 11 installed. If not, install it using Composer:
composer create-project laravel/laravel laravel-api
After installation, navigate to your project directory:
cd laravel-api
Next, configure your database in the .env
file:
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel_api
DB_USERNAME=root
DB_PASSWORD=
Then, run the migration command to create default tables:
php artisan migrate
Creating a RESTful API in Laravel 11
1. Defining API Routes
In Laravel, API routes are defined in the routes/api.php
file. Let’s create API routes for a sample Car
resource:
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\CarController;
Route::apiResource('cars', CarController::class);
This single line automatically generates routes for CRUD operations:
HTTP Method | Endpoint | Action | Description |
---|---|---|---|
GET | /api/cars | index | Fetch all cars |
POST | /api/cars | store | Create a new car |
GET | /api/cars/{id} | show | Fetch a single car |
PUT | /api/cars/{id} | update | Update a car |
DELETE | /api/cars/{id} | destroy | Delete a car |
2. Creating the Car Model and Migration
Run the following command to generate a model, migration, and factory for the Car
resource:
php artisan make:model Car -m
Modify the database/migrations/xxxx_xx_xx_create_cars_table.php
file:
public function up()
{
Schema::create('cars', function (Blueprint $table) {
$table->id();
$table->string('make');
$table->string('model');
$table->integer('year');
$table->decimal('price', 10, 2);
$table->timestamps();
});
}
Run the migration to create the cars
table:
php artisan migrate
3. Creating the Car Controller
Generate the controller using:
php artisan make:controller CarController --api
Modify the app/Http/Controllers/CarController.php
file:
namespace App\Http\Controllers;
use App\Models\Car;
use Illuminate\Http\Request;
use App\Http\Resources\CarResource;
class CarController extends Controller
{
public function index()
{
return CarResource::collection(Car::all());
}
public function store(Request $request)
{
$validated = $request->validate([
'make' => 'required|string|max:255',
'model' => 'required|string|max:255',
'year' => 'required|integer',
'price' => 'required|numeric',
]);
$car = Car::create($validated);
return new CarResource($car);
}
public function show(Car $car)
{
return new CarResource($car);
}
public function update(Request $request, Car $car)
{
$car->update($request->all());
return new CarResource($car);
}
public function destroy(Car $car)
{
$car->delete();
return response()->json(['message' => 'Car deleted successfully']);
}
}
4. Creating API Resources
To ensure proper API responses, Laravel provides API resources. Run the following command:
php artisan make:resource CarResource
Modify the app/Http/Resources/CarResource.php
file:
namespace App\Http\Resources;
use Illuminate\Http\Resources\Json\JsonResource;
class CarResource extends JsonResource
{
public function toArray($request)
{
return [
'id' => $this->id,
'make' => $this->make,
'model' => $this->model,
'year' => $this->year,
'price' => $this->price,
'created_at' => $this->created_at->toDateTimeString(),
'updated_at' => $this->updated_at->toDateTimeString(),
];
}
}
Additional Resources
Conclusion
In this guide, we explored how to create a RESTful API in Laravel 11. We covered API authentication, API resources, and CRUD operations. Furthermore, we set up API routes, created a Car
model and migration, built an API controller, and implemented API resources for structured responses.
For further improvements, consider implementing API documentation using Laravel Swagger and testing your API with PHPUnit. By following these Laravel API best practices, developers can build scalable and secure web applications efficiently.
If you need assistance with Laravel and API, Techliphant can help! We specialize in Laravel development, API optimization, and Docker containerization to streamline your project’s deployment and scalability.