-- creazione database
CREATE DATABASE phprest;
-- selezione database
USE phprest;Blog ❯ Autore: Fabio Moschini|Data: 07.05.2023
Rest e PHP
RestWebAPI

Introduzione
Nel post precedente abbiamo visto cosa sono i servizi REST, insieme a qualche esempio su come possano essere invocati tramite Postman. In questo articolo, vedremo come creare i servizi per le operazioni basilari (CRUD: Create, Read, Update, Delete) di gestione di una risorsa, utilizzando il linguaggio PHP e il database MySQL.Poiché abbiamo bisogno di un database, oltre ad un ambiente di sviluppo PHP, ho scelto di utilizzare XAMPP che può essere scaricato da questo indirizzo.
XAMPP è una distribuzione gratuita di Apache contenente PHP e MySQL.
Definizione del database
Cominciamo con la creazione del database:Visualizza / nascondi il codice
La risorsa che gestiremo è una tabella contenente articoli. Per semplicità, la tabella conterrà, oltre ad un campo id (primary key), i campi codice, descrizione e quantita, oltre a due campi created e updated valorizzati, rispettivamente, con la data di creazione del record e la data dell'ultimo aggiornamento.
Questo è lo script per la definizione della tabella articoli:
Visualizza / nascondi il codice
Configurazione di Apache: modifichiamo il file .htaccess
Il file .htaccess è un semplice file di testo che permette di configurare Apache tramite direttive.Quando viene inviata una richiesta ad Apache, questi, prima di eseguirla, controlla la presenza di un file .htaccess nella cartella del file richiesto o in una cartella superiore. Se è definito un file .htaccess, legge la configurazione e modifica la richiesta inviata (tipicamente, l'URL) in modo da rispettare le direttive specificate.
Il file .htaccess che utilizzeremo per il nostro progetto è questo:
Visualizza / nascondi il codice
E' importante prestare attenzione all'istruzione RewriteRule ^(.*)$ index.php?request=$1 [QSA,NC,L]. Attraverso questo comando diciamo ad Apache di reindirizzare tutte le richieste verso index.php passando, in query string, il parametro ?request=$1, dove $1 è la parte dell' URI originario al netto della parte che riguarda la root. Ad esempio, se l'URI della richiesta fosse www.server.com/risorsa/35, allora $1 = "risorsa/35", per cui la richiesta sarebbe reindirizzata all'URI www.example.com/index.php/risorsa/35.
Quindi abbiamo bisogno di un file index.php che faccia da "orchestratore" per le richieste inviate al server.
Struttura del progetto
Creiamo una directory demo dentro la root che ci servirà per conservare i file PHP. All'interno creiamo una directory v1, utilizzata per il versioning, e, al suo interno, definiamo una struttura di directory in modo tale da avere questa situazione:demo/
├─ v1/
│ ├─ api/
│ ├─ articoli/
│ ├─ class/
│ ├─ config/
│ ├─ index.php
├─ v1/
│ ├─ api/
│ ├─ articoli/
│ ├─ class/
│ ├─ config/
│ ├─ index.php
La directory api, interna a v1, conterrà una directory per ogni risorsa gestita dalle nostre API (inizialmente solo la directory articoli).
All'interno di articoli andremo a definire i file PHP per le operazioni CRUD su questa risorsa.
La directory class conterrà un file per ogni risorsa gestita, all'interno del quale andremo a definire una classe che rappresenta l'entità della risorsa insieme ai metodi per le operazioni di lettura e scrittura.
La directory config conterrà i file di configurazione delle nostre API, in particolare quello relativo al database.
Il file index.php, come anticipato, servirà a gestire le richieste.
Quindi la struttura finale del progetto può essere schematizzata in questo modo:
demo/
├─ v1/
│ ├─ api/
│ │ ├─ articoli/
│ │ │ ├─ create.php
│ │ │ ├─ delete.php
│ │ │ ├─ read.php
│ │ │ ├─ readAll.php
│ │ │ ├─ update.php
│
├─ v1/
│ ├─ api/
│ │ ├─ articoli/
│ │ │ ├─ create.php
│ │ │ ├─ delete.php
│ │ │ ├─ read.php
│ │ │ ├─ readAll.php
│ │ │ ├─ update.php
│