Creare un’API REST con Laravel: tutorial base

Creare un’API REST con Laravel: tutorial base

PHP & Backend
Typography
  • Smaller Small Medium Big Bigger
  • Default Helvetica Segoe Georgia Times

Guida passo passo per sviluppare una semplice API RESTful con il framework PHP più usato

Introduzione

Le API REST sono ormai una componente centrale nello sviluppo web moderno. Dalle applicazioni mobile ai siti dinamici, gran parte della comunicazione tra frontend e backend passa da endpoint RESTful.

Se lavori in PHP, il framework Laravel è una delle soluzioni più eleganti e veloci per costruire API robuste, sicure e ben strutturate.

In questo articolo ti guideremo passo passo per creare una semplice API REST con Laravel, partendo da un progetto pulito e arrivando a una chiamata funzionante con risposta in JSON. È un tutorial pensato per chi comincia, ma con solide basi anche per sviluppi più avanzati.

1. Creare un nuovo progetto Laravel

Assicurati di avere PHP ≥ 8.1, Composer installato e Laravel disponibile. Poi, crea un nuovo progetto:

bash
composer create-project laravel/laravel laravel-api

Entra nella cartella del progetto:

bash
cd laravel-api

2. Configura il database

Nel file .env, imposta i parametri del database MySQL o SQLite:

dotenv
DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=api_test DB_USERNAME=root DB_PASSWORD=

Poi crea la base dati nel tuo DBMS e avvia la migrazione base:

bash
php artisan migrate

3. Crea un modello con migration

Creiamo un esempio classico: un elenco di articoli. Generiamo modello, migration e controller in un solo comando:

bash
php artisan make:model Article -mcr

Nel file database/migrations/xxxx_create_articles_table.php, modifica le colonne:

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

Poi applica la migration:

bash
php artisan migrate

4. Aggiungi le rotte API

Nel file routes/api.php, aggiungi le seguenti rotte REST:

php
use App\Http\Controllers\ArticleController; Route::apiResource('articles', ArticleController::class);

Questa singola riga crea automaticamente le rotte:

  • GET /api/articles (lista)

  • GET /api/articles/{id} (dettaglio)

  • POST /api/articles (creazione)

  • PUT /api/articles/{id} (modifica)

  • DELETE /api/articles/{id} (cancellazione)

5. Sviluppa il controller

Nel file app/Http/Controllers/ArticleController.php, definisci i metodi base:

php
use App\Models\Article; use Illuminate\Http\Request; class ArticleController extends Controller { public function index() { return Article::all(); } public function store(Request $request) { return Article::create($request->all()); } public function show($id) { return Article::findOrFail($id); } public function update(Request $request, $id) { $article = Article::findOrFail($id); $article->update($request->all()); return $article; } public function destroy($id) { Article::destroy($id); return response()->json(['message' => 'Eliminato']); } }

Per abilitare il mass assignment, modifica il modello Article.php:

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

6. Testa la tua API

Puoi testare tutto con Postman, Insomnia o direttamente da riga di comando con curl.

Esempio di chiamata POST:

bash
curl -X POST http://localhost:8000/api/articles \ -H "Content-Type: application/json" \ -d '{"title":"Primo articolo", "content":"Contenuto di prova"}'

Avvia il server con:

bash
php artisan serve 

7. Bonus: JSON prettificato e risposta coerente

Laravel restituisce automaticamente risposte in formato JSON per le API. Puoi usare Resource e Form Request per una gestione più strutturata, ma per ora ti basta sapere che:

  • return Model::all(); genera un JSON leggibile

  • Puoi usare response()->json() per personalizzare il messaggio

Conclusione

Laravel ti permette di creare un’API REST funzionale in meno di un’ora, con struttura già pronta per essere estesa, testata e protetta.
Una volta compreso il funzionamento base, potrai aggiungere:

  • validazione

  • filtri

  • autenticazione con Laravel Sanctum

  • versionamento delle API

Se sei all’inizio con le API, Laravel è il miglior punto di partenza. Pochi comandi, convenzioni chiare, risultati solidi.