Laravel 11 : Guide complet pour créer une API RESTful CRUD

11 mai 2026

Laravel 11 : Guide complet pour créer une API RESTful CRUD

Laravel 11 est un framework PHP robuste et flexible, parfaitement adapté pour développer des APIs RESTful. Dans cet article, nous allons démontrer comment concevoir une application CRUD (Create, Read, Update, Delete) en respectant les meilleures pratiques avec Laravel 11. Suivez ce guide étape par étape afin de vous assurer que votre API est bien structurée et performante.

Création d’une API RESTful CRUD avec Laravel 11

Étape 1 : Installation et configuration de la base de données

Installer Laravel 11

Ouvrez le terminal et exécutez la commande :

composer create-project laravel/laravel apicrud

Configurer la base de données

Dans le fichier .env, saisissez les informations d’identification de la base de données :

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=nom_do_banco
DB_USERNAME=usuario
DB_PASSWORD=senha

Étape 2 : Création des modèles, des Requests, des Resources, des Controllers et des Routes

Créer le modèle et la migration

Dans le terminal, lancez :

php artisan make:model Post -m

Générer une Request de validation

php artisan make:request StorePostRequest

Créer la Resource

php artisan make:resource PostResource

Générer le Controller

php artisan make:controller Api/PostController --model=Post

Étape 3 : Configuration de la migration

Dans le fichier database/migrations/create_posts_table.php, configurez la table :

public function up()
{
    Schema::create('posts', function (Blueprint $table) {
        $table->id();
        $table->string('title');
        $table->text('content');
        $table->timestamps();
    });
}

public function down()
{
    Schema::dropIfExists('posts');
}

Étape 4 : Modèle Post

Dans le fichier app/Models/Post.php, définissez le modèle :

namespace AppModels;

use IlluminateDatabaseEloquentFactoriesHasFactory;
use IlluminateDatabaseEloquentModel;

class Post extends Model
{
    use HasFactory;

    protected $fillable = ['title', 'content'];}

Étape 5 : Request de validation

Dans le fichier app/Http/Requests/StorePostRequest.php, définissez les règles de validation :

namespace AppHttpRequests;

use IlluminateFoundationHttpFormRequest;

class StorePostRequest extends FormRequest
{
    public function authorize()
    {
        return true;
    }

    public function rules()
    {
        return [
            'title' => ['required', 'max:70'],
            'content' => ['required']
        ];
    }
}

Étape 6 : Resource Post

Dans le fichier app/Http/Resources/PostResource.php, définissez la structure de la ressource :

namespace AppHttpResources;

use IlluminateHttpResourcesJsonJsonResource;

class PostResource extends JsonResource
{
    public function toArray($request)
    {
        return [
            'id' => $this->id,
            'title' => $this->title,
            'content' => $this->content,
            'created_at' => $this->created_at,
        ];
    }
}

Étape 7 : Contrôleur Post

Dans le fichier app/Http/Controllers/Api/PostController.php, définissez les méthodes CRUD :

namespace AppHttpControllersApi;

use AppHttpControllersController;
use AppModelsPost;
use IlluminateHttpRequest;
use AppHttpRequestsStorePostRequest;
use AppHttpResourcesPostResource;

class PostController extends Controller
{
    public function index()
    {
        $posts = Post::all();
        return PostResource::collection($posts);
    }

    public function store(StorePostRequest $request)
    {
        $post = Post::create($request->validated());
        return new PostResource($post);
    }

    public function update(StorePostRequest $request, Post $post)
    {
        $post->update($request->validated());
        return new PostResource($post);
    }

    public function destroy(Post $post)
    {
        $post->delete();
        return response(null, 204);
    }
}

Étape 8 : Configurer les Routes

Dans le fichier routes/api.php, définissez les routes de l’API :

use AppHttpControllersApiPostController;
use IlluminateHttpRequest;
use IlluminateSupportFacadesRoute;

Route::middleware('auth:sanctum')->get('/user', function (Request $request) {
    return $request->user();
});

Route::apiResource('posts', PostController::class)->except([
    'create', 'show', 'edit'
]);

Étape 9 : Lancer l’application Laravel

Lancez le serveur :

php artisan serve

Vidéo

Cliquez ici pour regarder la vidéo de ce tutoriel

Conclusion en utilisant Laravel

En suivant ces étapes, vous disposerez d’une application CRUD RESTful utilisant Laravel 11, conforme aux meilleures pratiques. Assurez-vous de tester toutes les endpoints et de valider les réponses de l’API avec des outils tels que Postman.

Et n’oubliez pas de profiter de l’offre limitée pour vous inscrire à mon cours de développement web pour débutants ! En savoir plus en cliquant ici !

Fabien Delpont

Auteur

Fabien Delpont

Fabien Delpont, développeur et créateur du site Python Doctor.