0
0
Laravelframework~5 mins

API resource controllers in Laravel

Choose your learning style9 modes available
Introduction

API resource controllers help organize your code to handle common actions like listing, creating, updating, and deleting data in a clean way.

When building a RESTful API to manage data like users, posts, or products.
When you want to keep your controller code simple and follow a standard pattern.
When you need to quickly create endpoints for CRUD (Create, Read, Update, Delete) operations.
When you want Laravel to automatically handle routing for common API actions.
Syntax
Laravel
php artisan make:controller NameController --api

// In routes/api.php
Route::apiResource('names', NameController::class);

The --api flag creates a controller without methods for showing forms, since APIs usually don't need HTML forms.

The apiResource method sets up routes for index, store, show, update, and destroy actions automatically.

Examples
This command creates a controller for API actions related to products.
Laravel
php artisan make:controller ProductController --api
This sets up API routes for products, like GET /products and POST /products.
Laravel
Route::apiResource('products', ProductController::class);
This is a simple API resource controller with all main methods for managing products.
Laravel
<?php

namespace AppHttpControllers;

use AppModelsProduct;
use IlluminateHttpRequest;

class ProductController extends Controller
{
    public function index()
    {
        return Product::all();
    }

    public function store(Request $request)
    {
        return Product::create($request->all());
    }

    public function show(Product $product)
    {
        return $product;
    }

    public function update(Request $request, Product $product)
    {
        $product->update($request->all());
        return $product;
    }

    public function destroy(Product $product)
    {
        $product->delete();
        return response()->noContent();
    }
}
Sample Program

This example shows a TaskController with all API resource methods. The routes/api.php file uses apiResource to create routes automatically for tasks.

Laravel
<?php

namespace AppHttpControllers;

use AppModelsTask;
use IlluminateHttpRequest;

class TaskController extends Controller
{
    public function index()
    {
        return Task::all();
    }

    public function store(Request $request)
    {
        return Task::create($request->all());
    }

    public function show(Task $task)
    {
        return $task;
    }

    public function update(Request $request, Task $task)
    {
        $task->update($request->all());
        return $task;
    }

    public function destroy(Task $task)
    {
        $task->delete();
        return response()->noContent();
    }
}

// In routes/api.php
use AppHttpControllers\TaskController;

Route::apiResource('tasks', TaskController::class);
OutputSuccess
Important Notes

API resource controllers do not include methods for creating or editing forms because APIs usually work with JSON data.

Use route model binding (like Task $task) to automatically get the model instance from the URL.

Remember to add validation in the store and update methods to keep data safe.

Summary

API resource controllers organize common API actions in one place.

Use php artisan make:controller NameController --api to create one quickly.

Use Route::apiResource to set up routes automatically for your API.