L’architettura Client-Server nel web

Il web funziona secondo il modello Client-Server:

┌──────────────┐    Richiesta HTTP     ┌─────────────────────────────┐
│  Browser     │ ───────────────────→  │  Web Server (Apache/Nginx)  │
│  (Client)    │ ←───────────────────  │  + PHP                      │
└──────────────┘    Risposta HTTP      │  + MySQL                    │
                    (HTML generato)    └─────────────────────────────┘

Il client (browser) non vede mai il codice PHP né le credenziali del database: riceve solo l’HTML generato.

Il protocollo HTTP

HTTP (HyperText Transfer Protocol) è il protocollo di comunicazione del web. Definisce il formato delle richieste e delle risposte tra client e server. È un protocollo stateless: ogni richiesta è indipendente dalle precedenti (il server non ricorda le richieste precedenti senza meccanismi aggiuntivi come cookie e sessioni).

Struttura di una richiesta HTTP:

GET /studenti.php?classe=5A HTTP/1.1
Host: www.scuola.it
User-Agent: Mozilla/5.0 (Chrome/...)
Accept: text/html,application/xhtml+xml

Struttura di una risposta HTTP:

HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8
Content-Length: 2450

<!DOCTYPE html>
<html>...</html>

Metodi HTTP principali

Metodo Scopo Dati inviati Idempotente?
GET Richiedere dati Nell’URL (query string)
POST Inviare dati per creare/elaborare Nel body della richiesta No
PUT Aggiornare (sostituzione completa) Nel body
PATCH Aggiornamento parziale Nel body No
DELETE Eliminare una risorsa Nell’URL

Differenza fondamentale GET vs POST:

Codici di stato HTTP

Codice Categoria Esempi comuni
2xx Successo 200 OK, 201 Created, 204 No Content
3xx Reindirizzamento 301 Moved Permanently, 302 Found
4xx Errore del client 400 Bad Request, 401 Unauthorized, 403 Forbidden, 404 Not Found
5xx Errore del server 500 Internal Server Error, 503 Service Unavailable

HTTPS