Skip to content

Démarrage rapide ​

Laravel API Generator génère une API REST complète, structurée comme en production, depuis une seule commande artisan : modèle, migration, contrôleur, service, DTO, form request, resource, policy, factory, seeder et tests écrits.

La même entité à la main prend environ deux heures ; make:fullapi le fait en trente secondes

Prérequis ​

  • PHP >= 8.2 (>= 8.3 pour Laravel 13)
  • Laravel 12.x ou 13.x (les projets Laravel 10 et 11 restent en ^3.15, voir Passer à la 4.0)

Installation ​

bash
composer require --dev nameless/laravel-api-generator

Le service provider est auto-découvert. Aucune configuration requise.

Zéro lock-in

Le générateur est une dépendance de dev : il ne s'exécute jamais en production (composer install --no-dev l'exclut), et le code généré est du Laravel pur, sans dépendance à ce package (pas de classes de base, pas de helpers à l'exécution). Vous pouvez même supprimer le générateur ensuite : tout continue de fonctionner.

Votre première API ​

bash
php artisan make:fullapi Post --fields="title:string,content:text,published:boolean"

Puis :

bash
php artisan migrate
php artisan test

La suite passe dès la génération, avec de vraies assertions sur de vrais endpoints, là où la plupart des générateurs livrent des squelettes à remplir.

Ce qui est généré ​

Une commande crée 13 fichiers par entité et enregistre la route API :

CoucheFichierEmplacement
ModèlePost.phpapp/Models/
ContrôleurPostController.phpapp/Http/Controllers/
ServicePostService.phpapp/Services/
DTOPostDTO.phpapp/DTO/
RequestsStorePostRequest.php, UpdatePostRequest.phpapp/Http/Requests/
ResourcePostResource.phpapp/Http/Resources/
PolicyPostPolicy.phpapp/Policies/
FactoryPostFactory.phpdatabase/factories/
SeederPostSeeder.phpdatabase/seeders/
Migration*_create_posts_table.phpdatabase/migrations/
Test featurePostControllerTest.phptests/Feature/
Test unitairePostServiceTest.phptests/Unit/
Routeentrée apiResourceroutes/api.php

L'architecture générée ​

Chaque requête traverse une structure en couches propre :

Le contrôleur reste fin. Il interroge la policy, puis délègue au service :

php
public function update(UpdatePostRequest $request, Post $post)
{
    Gate::authorize('update', $post);

    $dto = PostDTO::fromRequest($request);
    return new PostResource($this->service->update($post, $dto));
}

La logique métier vit dans PostService, les données traversent les couches sous forme d'un PostDTO typé et readonly, et PostPolicy décide qui peut faire quoi. La policy générée laisse passer tout le monde, invités compris, donc l'API fonctionne tout de suite et la restreindre revient à modifier une méthode. Les mises à jour acceptent un contenu partiel : un PATCH modifie les champs qu'il envoie et laisse les autres tels quels. Quand votre API grandit, les bons emplacements existent déjà.

Des modèles que votre IDE comprend ​

Chaque modèle généré embarque un bloc PHPDoc complet : champs, colonnes FK, relations, timestamps :

php
/**
 * @property int $id
 * @property string $title
 * @property \App\Enums\Status $status
 * @property \Illuminate\Support\Carbon|null $published_at
 * @property-read \Illuminate\Database\Eloquent\Collection<int, Comment> $comments
 */
class Post extends Model

L'autocomplétion fonctionne immédiatement dans VS Code et PhpStorm, sans ide-helper pour le code généré.

Étapes suivantes ​