Domande e risposte sui colloqui REST API (Guida 2026)
Impara a padroneggiare i concetti REST API, dai fondamenti ai pattern avanzati, con oltre 50 domande da colloquio, esempi di codice pratici e tabelle di riferimento rapido.
Le REST API alimentano gran parte delle integrazioni su internet. Che tu stia puntando a un ruolo backend, full stack o da software engineer, è probabile che ti vengano poste domande su design di REST API, metodi HTTP e pattern di autenticazione.
In questa guida ti accompagnerò attraverso le domande che gli intervistatori fanno davvero. Le ho organizzate per livello di difficoltà e tipo di ruolo, così puoi concentrarti su ciò che conta di più per la posizione che desideri. Ogni risposta include esempi pratici e, quando rilevante, snippet di codice che puoi adattare.
Una cosa da tenere a mente: gli intervistatori testano molto più spesso i fondamenti rispetto agli argomenti avanzati. Se domini le basi (metodi HTTP, codici di stato, statelessness), affronterai la maggior parte dei colloqui sulle REST API con sicurezza. I pattern architetturali più sofisticati vengono dopo.
Domande di base sui colloqui REST API
Queste domande verificano le tue conoscenze fondamentali. Aspettale in quasi ogni colloquio, a prescindere dalla seniority.
1. Che cos'è REST e quali sono i suoi vincoli?
REST sta per Representational State Transfer. È uno stile architetturale per progettare applicazioni di rete, definito da Roy Fielding nella sua tesi di dottorato del 2000.
REST ha sei vincoli:
Client-Server: Separazione delle responsabilità tra interfaccia utente e archiviazione dati
Stateless: Ogni richiesta contiene tutte le informazioni necessarie per completarla
Cacheable: Le risposte devono indicare se possono essere messe in cache
Layered System: I componenti non possono vedere oltre il loro livello immediato
Uniform Interface: Modalità standardizzata di interagire con le risorse
Code-on-Demand (opzionale): I server possono inviare codice eseguibile ai client
2. Qual è la differenza tra REST e SOAP?
REST è uno stile architetturale; SOAP è un protocollo. REST usa tipicamente JSON su HTTP e sfrutta i metodi HTTP standard. SOAP usa esclusivamente XML e definisce un proprio formato di messaggistica con buste e intestazioni.
Aspetto
REST
SOAP
Formato
JSON, XML, altri
Solo XML
Trasporto
HTTP
HTTP, SMTP, altri
Caching
Caching HTTP nativo
Non cacheabile
Performance
Leggero
Maggior overhead
SOAP ha ancora senso per sistemi enterprise che richiedono contratti formali (WSDL) o sicurezza a livello di messaggio (WS-Security).
3. Cosa sono i metodi HTTP e quando si usa ciascuno?
I metodi HTTP definiscono l'azione da eseguire su una risorsa.
Metodo
Scopo
Esempio
GET
Recuperare una risorsa
GET /users/123
POST
Creare una nuova risorsa
POST /users
PUT
Sostituire interamente una risorsa
PUT /users/123
PATCH
Aggiornare parzialmente una risorsa
PATCH /users/123
DELETE
Rimuovere una risorsa
DELETE /users/123
4. Qual è la differenza tra PUT e POST?
POST crea una nuova risorsa in cui il server determina l'URI. PUT sostituisce una risorsa a uno specifico URI che il client specifica.
POST /users → Server creates user, returns /users/123
PUT /users/123 → Client specifies URI, replaces entire resourceOfferto da
Se fai PUT su un URI che non esiste, il server può crearlo. Se fai PUT su un URI esistente, sostituisci l'intera risorsa.
5. Qual è la differenza tra PUT e PATCH?
PUT sostituisce l'intera risorsa. PATCH applica modifiche parziali.
# PUT replaces everything
PUT /users/123{"name":"Khalid","email":"[email protected]","role":"admin"}# PATCH updates only specified fields
PATCH /users/123{"role":"admin"}Offerto da
6. Cosa significa "stateless" in REST?
Stateless significa che ogni richiesta deve contenere tutte le informazioni che il server necessita per elaborarla. Il server non memorizza alcun contesto del client tra una richiesta e l'altra.
Questo significa niente sessioni lato server. Se un utente è autenticato, il client deve inviare le credenziali (tipicamente un token) con ogni richiesta.
7. Cosa rende un'API RESTful?
Un'API è davvero RESTful quando rispetta tutti i vincoli REST, incluso HATEOAS (Hypermedia as the Engine of Application State). In pratica, la maggior parte delle API che si definiscono "REST" sono in realtà "simili a REST" o al Livello 2 del Richardson Maturity Model. E onestamente, va bene per la maggior parte dei casi d'uso.
Livelli del Richardson Maturity Model per le REST API. Immagine dell'autore.
8. Quali sono i codici di stato HTTP di base che dovresti conoscere?
Dovresti conoscere almeno questi sette codici essenziali che coprono la maggior parte degli scenari API:
Codice
Nome
Quando usarlo
200
OK
GET, PUT, PATCH riusciti
201
Created
POST riuscito (includi header Location)
204
No Content
DELETE riuscito
400
Bad Request
Sintassi malformata
404
Not Found
La risorsa non esiste
500
Internal Server Error
Errore lato server
9. Qual è la differenza tra una risorsa e un endpoint?
Una risorsa è l'entità dati (utente, ordine, prodotto). Un endpoint è il percorso URL che fornisce accesso a quella risorsa.
Resource: User
Endpoints: GET /users, GET /users/123, POST /usersOfferto da
10. Quali sono le best practice per il design degli URI?
Usa nomi (sostantivi), non verbi. Mantieni gli URI in minuscolo con trattini per i nomi composti. Usa sostantivi plurali per le collezioni.
Good: /users, /users/123, /order-items
Bad: /getUsers, /Users, /order_itemsOfferto da
Evita annidamenti profondi. Invece di /users/123/posts/456/comments/789, considera /comments/789 o /comments?post_id=456.
11. Cos'è l'idempotenza e quali metodi HTTP sono idempotenti?
Un'operazione è idempotente se eseguirla più volte produce lo stesso risultato che eseguirla una sola volta.
Metodo
Idempotente
Perché
GET
Sì
La lettura non cambia lo stato
PUT
Sì
Sostituire con gli stessi dati produce lo stesso risultato
DELETE
Sì
Cancellare due volte lascia la risorsa cancellata
POST
No
Creare due volte crea due risorse
PATCH
No*
Dipende dall'operazione
Un PATCH che imposta un valore è idempotente; un PATCH che incrementa un contatore non lo è.
12. Qual è la differenza tra metodi safe e idempotenti?
I metodi safe non modificano le risorse (GET, HEAD, OPTIONS). I metodi idempotenti possono essere chiamati più volte con lo stesso effetto (GET, PUT, DELETE).
Tutti i metodi safe sono idempotenti, ma non tutti i metodi idempotenti sono safe. DELETE è idempotente ma non safe perché modifica lo stato.
13. Quando usare parametri di query rispetto ai parametri di path?
I parametri di path identificano una specifica risorsa. I parametri di query filtrano, ordinano o paginano collezioni.
Path: /users/123 (specific user)
Query: /users?status=active (filtered collection)
/users?sort=name&limit=10Offerto da
14. Cos'è la negoziazione dei contenuti?
La negoziazione dei contenuti consente ai client di richiedere diverse rappresentazioni di una risorsa. Il client invia un header Accept e il server risponde con il formato appropriato.
Accept: application/json → Server returns JSON
Accept: application/xml → Server returns XMLOfferto da
15. A cosa serve il metodo OPTIONS?
OPTIONS restituisce i metodi HTTP che un server supporta per un URL specifico. I browser lo usano per le richieste di preflight CORS per verificare se le richieste cross-origin sono consentite.
Domande intermedie sulle REST API
Queste domande testano l'applicazione pratica e il processo decisionale. Aspettale per posizioni di livello intermedio.
16. Qual è la differenza tra 401 e 403?
Questa è la coppia di codici più comunemente confusa. Ho visto ingegneri senior invertirli nelle code review.
401 Unauthorized
Significa non autenticato. Il server non sa chi sei. La tua risposta dovrebbe invitare l'utente ad accedere.
403 Forbidden
Significa non autorizzato. Il server sa chi sei ma non hai i permessi. Rieseguire l'autenticazione non aiuterà.
Diagramma decisionale: errore di autenticazione vs autorizzazione. Immagine dell'autore.
17. Qual è la differenza tra 400 e 422?
Ecco esempi che illustrano la differenza:
400 Bad Request
Indica sintassi malformata. Il server non può analizzare la richiesta (struttura JSON non valida, header obbligatori mancanti).
422 Unprocessable Entity
Indica sintassi valida ma errori semantici. Il JSON è valido ma i dati falliscono la validazione (formato email non valido, password troppo corta).
Un ETag è un identificatore di versione per una risorsa. Il server lo invia nelle risposte; il client lo reinvia nelle richieste successive per verificare se la risorsa è cambiata.
# First request
GET /users/123
Response: ETag: "abc123"
# Subsequent request
GET /users/123
If-None-Match: "abc123"
Response: 304 Not Modified (if unchanged)Offerto da
22. Quali metodi di autenticazione si usano per le REST API?
I quattro metodi di autenticazione più comuni sono API Keys, Bearer Token, OAuth 2.0 e JWT:
Metodo
Caso d'uso
Pro
Contro
API Keys
Server-to-server
Semplici
Nessuna scadenza, facili da perdere
Bearer Tokens
Session auth
Stateless
Necessaria conservazione sicura
OAuth 2.0
Accesso di terze parti
Autorizzazione delegata
Implementazione complessa
JWT
Autenticazione stateless
Autocontenuti
Impossibile revocarli senza blacklist
23. Cos'è JWT e come funziona?
JWT (JSON Web Token) è composto da tre parti: Header, Payload e Signature. Scopri di più su lavorare con JSON in Python.
Il server firma il token; i client lo inviano con le richieste. Il server valida la firma senza consultare il database.
24. Qual è la differenza tra RS256 e HS256?
HS256 (simmetrico): La stessa secret firma e verifica. Rischioso se più servizi devono verificare i token.
RS256 (asimmetrico): La chiave privata firma, la chiave pubblica verifica. Consigliato per sistemi distribuiti in cui più servizi validano i token.
25. Cos'è HATEOAS?
HATEOAS (Hypermedia as the Engine of Application State) significa che le risposte includono link ad azioni e risorse correlate.
{"id":123,"name":"Khalid","links":[{"rel":"self","href":"/users/123"},{"rel":"orders","href":"/users/123/orders"}]}Offerto da
In pratica, la maggior parte delle API non implementa HATEOAS completamente. Conosci il concetto ma non aspettarti di implementarlo nella maggior parte dei lavori. Anche le grandi aziende tech raramente costruiscono API pienamente conformi a HATEOAS.
26. Come gestisci gli errori in modo coerente?
Usa il formato RFC 7807 Problem Details per risposte di errore coerenti:
{"type":"https://api.example.com/errors/validation","title":"Validation Error","status":422,"detail":"Email format is invalid","instance":"/users"}Offerto da
27. Cos'è il rate limiting e perché è importante?
Il rate limiting protegge la tua API da abusi e garantisce un uso equo. Risposta comune:
HTTP/1.1 429 Too Many Requests
Retry-After: 3600
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 0Offerto da
28. Come progetti filtraggio e ordinamento?
Usa parametri di query con convenzioni chiare:
# Filtering
GET /products?category=electronics&price[gte]=100&price[lte]=500
# Sorting (prefix - for descending)
GET /users?sort=-created_at,nameOfferto da
Domande avanzate sulle REST API
Queste domande verificano il pensiero architetturale. Aspettale per posizioni senior.
29. Cosa è cambiato tra OAuth 2.0 e OAuth 2.1?
OAuth 2.1 consolida le best practice di sicurezza:
Funzionalità
OAuth 2.0
OAuth 2.1
PKCE
Opzionale
Obbligatorio per TUTTI i client
Implicit Grant
Supportato
Rimosso
Password Grant
Supportato
Rimosso
Redirect URI
Matching flessibile
Richiesto match esatto
Il punto chiave: usa il flusso Authorization Code con PKCE per tutti i tipi di client.
30. Come implementi l'idempotenza per endpoint di pagamento?
Usa chiavi di idempotenza per rendere sicuri i retry dei POST:
asyncdefhandle_payment(request: Request, payment: PaymentCreate):
idempotency_key = request.headers.get("Idempotency-Key")# Check if already processed
cached =await redis.get(f"idem:{idempotency_key}")if cached:return JSONResponse(json.loads(cached))# Process payment
result =await process_payment(payment)# Cache result (24-hour TTL)await redis.setex(f"idem:{idempotency_key}",86400, json.dumps(result))return resultOfferto da
Il client genera un UUID e lo invia con la richiesta. Se arriva di nuovo la stessa chiave, restituisci la risposta in cache.
31. Come progetteresti un rate limiter distribuito?
Per sistemi distribuiti, non puoi usare contatori in memoria perché il traffico è bilanciato tra istanze. Questo è un tranello comune che mette in difficoltà i candidati.
Architettura:
Usa Redis per l'archiviazione centralizzata dei contatori
Implementa l'algoritmo Token Bucket per tollerare i burst
Usa operazioni atomiche (script Lua) per prevenire race condition
# Pseudocode for Token Bucket
tokens = redis.get(user_id)or max_tokens
if tokens >0:
redis.decr(user_id)
process_request()else:return429Offerto da
32. Quando sceglieresti gRPC invece di REST?
La scelta tra gRPC e REST dipende dai requisiti specifici.
Scegli gRPC per:
Comunicazione interna tra microservizi (throughput 5-10x)
Requisiti di streaming in tempo reale
Mobile-to-backend con vincoli di banda
Ambienti poliglotti che necessitano di contratti rigidi
Scegli REST per:
API pubbliche con consumatori eterogenei
Applicazioni web (supporto universale dei browser)
Operazioni CRUD semplici
Team non familiari con Protocol Buffers
33. Come gestisci operazioni di lunga durata?
Usa il pattern di richiesta asincrona:
Il client invia la richiesta
Il server restituisce 202 Accepted con un URL di stato
Il client interroga l'URL di stato fino al completamento
POST /reports
Response: 202 Accepted
Location: /reports/abc123/status
GET /reports/abc123/status
Response: {"status": "processing", "progress": 45}
GET /reports/abc123/status
Response: {"status": "completed", "result_url": "/reports/abc123"}Offerto da
34. Cos'è il pattern Saga?
Saga gestisce transazioni distribuite tra microservizi senza locking. Ogni servizio esegue una transazione locale e pubblica un evento. Se un passaggio fallisce, transazioni compensative annullano i passaggi precedenti.
Order Created → Payment Processed → Inventory Reserved → Order Confirmed
↓ (failure)
Release Payment → Cancel OrderOfferto da
35. Quali sono le vulnerabilità di sicurezza comuni dei JWT?
Confusione dell'algoritmo: l'attaccante cambia RS256 in HS256 e firma con la chiave pubblica. Soluzione: metti sempre in whitelist gli algoritmi.
# Vulnerable
jwt.decode(token, key)# Secure
jwt.decode(token, key, algorithms=["RS256"])Offerto da
Algoritmo "none": l'attaccante rimuove completamente la firma. Soluzione: rifiuta l'algoritmo "none".
Domande REST API per Backend Developer
Queste domande si concentrano sui dettagli di implementazione lato server, ottimizzazione del database e pattern di performance che i backend engineer incontrano quotidianamente.
36. Cos'è il problema N+1 query?
Il problema N+1 si verifica quando recuperi N record ed esegui una query separata per la relazione di ciascun record.
# N+1 Problem: 101 queries for 100 users
users = User.query.all()# 1 queryfor user in users:print(user.posts)# 100 queriesOfferto da
Soluzioni:
Django: usa select_related() per le foreign key, prefetch_related() per le many-to-many.
# 2 queries instead of 101
users = User.objects.prefetch_related('posts').all()Offerto da
SQLAlchemy: usa joinedload() o selectinload().
37. Come configuri il connection pooling?
Il connection pooling riutilizza le connessioni al database invece di crearne di nuove per ogni richiesta.
# SQLAlchemy
engine = create_engine("postgresql://user:pass@host/db",
pool_size=5,# Permanent connections
max_overflow=10,# Temporary overflow
pool_timeout=30,# Wait timeout
pool_pre_ping=True# Validate before use)Offerto da
38. Quali strategie di caching conosci?
Ci sono tre strategie di caching principali, ciascuna ottimizzata per diversi pattern di accesso:
Strategia
Descrizione
Caso d'uso
Cache-Aside
L'app controlla prima la cache, poi il DB
Lettura intensiva, tollera dati stantii
Write-Through
Scrive insieme su cache e DB
Coerenza critica
Write-Behind
Scrive in cache, aggiornamento DB asincrono
Alto throughput di scrittura
39. Come implementi la verifica della firma dei webhook?
La verifica della firma dei webhook assicura che la richiesta provenga davvero dal mittente previsto. Ecco un'implementazione con HMAC:
Dovresti monitorare queste quattro metriche chiave per valutare la salute della tua API:
Metrica
Descrizione
Soglia di alert
Latenza P50
Tempo di risposta mediano
Baseline
Latenza P99
1% più lento
> 2s per 5 min
Tasso di errore
% di 4xx/5xx
> 1% per 5 min
Throughput
Richieste al secondo
Capacity planning
Domande REST API per Full Stack Developer
Queste domande verificano la tua comprensione sia delle esigenze del client che del server, in particolare sicurezza del browser, gestione dello stato e comunicazione cross-origin.
41. Quando un browser invia una richiesta di preflight CORS?
I browser inviano un OPTIONS di preflight per:
Metodi diversi da GET, HEAD, POST
Header personalizzati (Authorization, X-API-Key)
Content-Type diverso da form-urlencoded, multipart/form-data, text/plain
42. Come configuri il CORS in modo sicuro?
Una configurazione CORS sicura richiede whitelist esplicita delle origini e una gestione attenta delle credenziali. Ecco un setup sicuro con Express.js:
// Express.js
app.use(cors({origin:['https://yourdomain.com'],// Never use * with credentialscredentials:true,methods:['GET','POST','PUT','DELETE'],allowedHeaders:['Content-Type','Authorization']}));Offerto da
Non usare mai il jolly (*) con le credenziali. Non consentire mai l'origine null.
43. Dove dovresti archiviare i token sul client?
La conservazione dei token comporta compromessi di sicurezza tra vulnerabilità XSS e CSRF"
Storage
Rischio XSS
Rischio CSRF
Raccomandazione
localStorage
Alto
Nessuno
Evita per i token
Cookie HttpOnly
Basso
Richiede mitigazione
Consigliato
In memoria
Basso
Basso
Meglio per access token
Best practice: conserva i refresh token in cookie HttpOnly conSameSite=Strict. Tieni gli access token in memoria.
44. Quando dovresti usare WebSocket rispetto a SSE?
La scelta dipende dal fatto che ti serva comunicazione bidirezionale e da come vuoi gestire la riconnessione:
Funzionalità
WebSocket
SSE
Direzione
Bidirezionale
Server verso client
Riconnessione
Manuale
Automatica
Dati binari
Sì
No
Usa SSE per notifiche, feed in tempo reale, ticker azionari. Usa WebSocket per chat, giochi multiplayer, editing collaborativo.
45. Come gestisci gli upload di file?
Per file grandi, usa upload a chunk con tracciamento dei progressi:
asyncfunctionchunkedUpload(file, chunkSize =5*1024*1024){const totalChunks = Math.ceil(file.size / chunkSize);for(let i =0; i < totalChunks; i++){const chunk = file.slice(i * chunkSize,(i +1)* chunkSize);awaituploadChunk(uploadId, i, chunk);}}Offerto da
Domande REST API basate su scenari
Queste domande valutano la tua capacità di applicare i principi REST a problemi reali. Gli intervistatori vogliono vedere il tuo processo di design e come gestisci i trade-off architetturali.
46. Progetta una REST API per un sistema di prenotazione hotel
Un sistema di prenotazione hotel deve gestire ricerche, verifica disponibilità e prenotazioni evitando le doppie prenotazioni. Ecco le risorse core:
Risorse:
/hotels - Elenco e ricerca hotel
/hotels/{id}/rooms - Camere disponibili
/bookings - Creare e gestire prenotazioni
/guests/{id} - Profili ospite
Decisioni chiave:
Usa paginazione a cursore per la ricerca hotel
Implementa locking ottimistico per la disponibilità delle camere
Restituisci 409 Conflict per tentativi di doppia prenotazione
Usa chiavi di idempotenza per l'elaborazione dei pagamenti
47. Come implementeresti i soft delete?
Aggiungi un timestamp deleted_atinvece di rimuovere i record:
@app.delete("/users/{user_id}")defdelete_user(user_id:int):
user = db.get(user_id)
user.deleted_at = datetime.utcnow()
db.commit()return Response(status_code=204)@app.get("/users")deflist_users(include_deleted:bool=False):
query = User.query
ifnot include_deleted:
query = query.filter(User.deleted_at.is_(None))return query.all()Offerto da
48. Come migri da v1 a v2 senza rompere i client?
Usa il pattern Strangler Fig:
Distribuisci v2 insieme a v1
Instrada le nuove funzionalità a v2
Migra gradualmente gli endpoint esistenti
Comunica la deprecazione tramite header Sunset
Rimuovi v1 dopo il periodo di migrazione
49. Come progetteresti un'API di ricerca con filtri complessi?
Per una ricerca prodotti con filtri multipli:
GET /products?q=laptop&category=electronics&price[gte]=500&price[lte]=2000&brand=apple,dell&in_stock=true&sort=-rating&limit=20&cursor=abc123Offerto da
Decisioni di design:
Usa Elasticsearch per la ricerca full-text (i DB relazionali faticano con il fuzzy matching)
Implementa la ricerca a faccette per mostrare le opzioni di filtro disponibili
Restituisci i conteggi dei filtri così gli utenti sanno quanti risultati produce ciascun filtro
Metti in cache le combinazioni di ricerca popolari
50. Come gestisci il versionamento API in un'architettura a microservizi?
Opzioni:
Versionamento a livello di gateway: l'API gateway instrada /v1/* ai servizi vecchi, /v2/*ai nuovi
Versionamento a livello di servizio: ogni servizio gestisce la propria negoziazione di versione
Contratti guidati dai consumatori: usa Pact o strumenti simili per garantire compatibilità
Per la maggior parte dei team, il versionamento a livello di gateway offre la separazione più pulita.
51. Come implementeresti il rate limiting per diversi livelli di utenti?
La soluzione prevede di definire limiti specifici per livello e verificarli usando contatori Redis:
Queste domande valutano le tue capacità di comunicazione e come gestisci le sfide reali delle API. Concentrati nel dimostrare il tuo processo di problem-solving e come lavori con gli stakeholder.
52. Spiega REST a una persona non tecnica
"Pensa a una REST API come a un cameriere in un ristorante. Tu (il cliente) non puoi andare direttamente in cucina. Invece, dici al cameriere cosa vuoi dal menù, e lui te lo porta. Il menù è come la documentazione dell'API, che elenca cosa puoi ordinare. Il cameriere segue regole precise: chiedi qualcosa (GET), ordini qualcosa di nuovo (POST) o rimandi indietro qualcosa (DELETE). Se in cucina è finito qualcosa, il cameriere te lo dice (404 Not Found) così non aspetti all'infinito."
Questa analogia funziona sorprendentemente bene nelle riunioni con gli stakeholder.
53. Descrivi una volta in cui hai ottimizzato un'API
Usa il metodo STAR:
Situazione: "La nostra API di ricerca aveva tempi di risposta di 3 secondi durante i picchi di traffico"
Compito: "Dovevo ridurre la latenza senza grandi cambiamenti architetturali"
Azione: "Ho aggiunto caching Redis per le query frequenti, implementato la paginazione a cursore e aggiunto indici al database"
Risultato: "Il tempo di risposta è sceso a 200 ms e abbiamo gestito 5x più traffico"
54. Come comunichi breaking changes ai consumatori dell'API?
Annuncia in anticipo: dai almeno 6-12 mesi di preavviso per i cambiamenti maggiori
Usa l'header Sunset: Sunset: Sat, 31 Dec 2026 23:59:59 GMT
Fornisci guide di migrazione: documenta esattamente cosa cambia e come adattarsi
Mantieni entrambe le versioni: tieni in esecuzione la versione vecchia durante la transizione
Monitora l'uso: traccia quali client sono ancora sulla vecchia versione
55. Quale documentazione crei per le API?
La documentazione essenziale include:
Specifica OpenAPI/Swagger: contratto leggibile dalle macchine
Guida rapida: prima chiamata API in meno di 5 minuti
Guida all'autenticazione: come ottenere e usare le credenziali
Riferimento errori: tutti i possibili codici d'errore e come gestirli
Changelog: cosa è cambiato in ogni versione
Documentazione rate limit: limiti per tier e come gestire i 429
56. Quando NON useresti REST?
REST non è sempre la scelta giusta. Sapere quando usare alternative dimostra maturità architetturale. Ho visto team forzare REST in casi d'uso in cui crea più problemi che soluzioni.
Usa questa sezione come consultazione rapida quando devi verificare le proprietà dei metodi HTTP, i codici di stato o pattern comuni durante la preparazione ai colloqui o nello sviluppo reale.
Confronto dei metodi HTTP
Questa tabella riassume le proprietà chiave di ciascun metodo HTTP, aiu
Metodo
Safe
Idempotente
Cacheabile
Uso tipico
GET
Sì
Sì
Sì
Recupero risorsa
POST
No
No
Condizionale
Creazione risorsa
PUT
No
Sì
No
Sostituzione risorsa
PATCH
No
No
Condizionale
Aggiornamento parziale
DELETE
No
Sì
No
Rimozione risorsa
HEAD
Sì
Sì
Sì
Ottenere solo gli header
OPTIONS
Sì
Sì
No
Preflight CORS
Riferimento codici di stato
Ecco i codici di stato HTTP più usati, organizzati per categoria. Concentrati nel capire quando usarli piuttosto che memorizzare l'intera specifica.
2xx Success
200 OK: GET, PUT, PATCH riusciti
201 Created: POST riuscito (includi header Location)
204 No Content: DELETE riuscito
4xx Client Errors
400 Bad Request: sintassi malformata
401 Unauthorized: autenticazione richiesta
403 Forbidden: autenticato ma non autorizzato
404 Not Found: la risorsa non esiste
409 Conflict: conflitto di stato
422 Unprocessable Entity: errore di validazione
429 Too Many Requests: limitato dal rate
5xx Server Errors
500 Internal Server Error: errore generico del server
502 Bad Gateway: errore del server a monte
503 Service Unavailable: temporaneamente sovraccarico
Errori comuni da evitare
Anche sviluppatori esperti cadono in queste trappole. Fai attenzione a questi errori comuni quando progetti o implementi REST API:
Usare verbi negli URL (ad es. /getUsers invece di /users)
Restituire 200 OK per stati di errore, che rompe la gestione degli errori lato client
Confondere 401 e 403 (Autenticazione vs. Autorizzazione)
Annidare eccessivamente gli URL oltre due livelli
Conservare i token in localStorage (crea vulnerabilità XSS)
Ignorare l'idempotenza per le richieste POST
Restituire messaggi di errore generici senza dettagli utili
Conclusione
So che memorizzare definizioni non ti garantirà di superare ogni colloquio tecnico. La realtà è che l'ingegneria nel mondo reale spesso richiede di infrangere le "regole" rigide di cui abbiamo appena parlato, e agli intervistatori interessa più il tuo ragionamento che la tua capacità di recitare le specifiche RFC. Per ruoli altamente specializzati, una profonda conoscenza del dominio o l'esperienza con framework specifici può comunque essere il fattore decisivo.
Ma padroneggiare questi fondamenti REST conta anche se non incontrerai esattamente queste domande. Funziona come una mappa per capire come opera il web moderno. Quando ti viene chiesto di progettare un nuovo sistema o di fare debug di un incidente in produzione, capire la distinzione tra un 401 e un 403 (come ho spiegato prima) ti dà la chiarezza per risolvere i problemi più velocemente. Riconoscerai esattamente perché standardizzare le interazioni della tua API, non solo scrivere codice che funziona, è il segno distintivo di un ingegnere senior.
Sono un data engineer e community builder: lavoro su pipeline dati, cloud e strumenti di AI, e scrivo tutorial pratici e ad alto impatto per DataCamp e per sviluppatori alle prime armi.
FAQs
Devo memorizzare le specifiche RFC per i metodi HTTP?⌄
Assolutamente no. Gli intervistatori vogliono vedere che capisci le implicazioni pratiche, non che reciti la documentazione. Concentrati sul perché l'idempotenza conta quando una richiesta di rete fallisce e deve essere ritentata. È questo che distingue il pensiero junior da quello senior.
E se al colloquio mi chiedono di SOAP o XML-RPC nel 2026?⌄
Capita più spesso di quanto pensi, specialmente per ruoli in banche, sanità o appaltatori governativi. La chiave è spiegare perché questi protocolli più vecchi esistono ancora (contratti rigidi, sicurezza a livello di messaggio) invece di liquidarli come obsoleti. Dimostra che capisci i trade-off, non solo le mode.
Come posso esercitarmi nel design di API senza un progetto reale?⌄
Scegli un servizio che usi ogni giorno (Spotify, Twitter, il sistema di prenotazione della tua palestra) e abbozza come progetteresti la sua API. Quali endpoint creeresti? Come gestiresti la paginazione per una playlist con 10.000 brani? Questo esercizio rivela rapidamente le lacune nella tua comprensione.
Gli intervistatori testano davvero OAuth 2.1, o domina ancora OAuth 2.0?⌄
La maggior parte delle aziende è ancora su OAuth 2.0, ma sapere che la 2.1 rende PKCE obbligatorio per tutti i client dimostra che sei aggiornato sulle best practice di sicurezza. Citalo come "la direzione in cui si sta muovendo il settore" invece di dare per scontato che tutti ci siano già.
Qual è l'errore che mette più in difficoltà i candidati?⌄
Non fare domande di chiarimento durante il system design. Quando viene chiesto di "progettare un'API", i candidati saltano subito agli endpoint senza chiedere scala, requisiti di consistenza o se è interna o pubblica. Le risposte migliori partono dalle domande, non dalle soluzioni.
Scopri i 15 migliori server MCP remoti che stanno trasformando lo sviluppo AI nel 2026. Scopri come migliorano automazione, ragionamento, sicurezza e velocità dei workflow.
Crea API robuste e pronte per la produzione con FastAPI, padroneggiando operazioni HTTP, validazione ed esecuzione async per pipeline dati e ML efficienti.
Le REST API alimentano gran parte delle integrazioni su internet. Che tu stia puntando a un ruolo backend, full stack o da software engineer, è probabile che ti vengano poste domande su design di REST API, metodi HTTP e pattern di autenticazione.
In questa guida ti accompagnerò attraverso le domande che gli intervistatori fanno davvero. Le ho organizzate per livello di difficoltà e tipo di ruolo, così puoi concentrarti su ciò che conta di più per la posizione che desideri. Ogni risposta include esempi pratici e, quando rilevante, snippet di codice che puoi adattare.
Una cosa da tenere a mente: gli intervistatori testano molto più spesso i fondamenti rispetto agli argomenti avanzati. Se domini le basi (metodi HTTP, codici di stato, statelessness), affronterai la maggior parte dei colloqui sulle REST API con sicurezza. I pattern architetturali più sofisticati vengono dopo.
Domande di base sui colloqui REST API
Queste domande verificano le tue conoscenze fondamentali. Aspettale in quasi ogni colloquio, a prescindere dalla seniority.
1. Che cos'è REST e quali sono i suoi vincoli?
REST sta per Representational State Transfer. È uno stile architetturale per progettare applicazioni di rete, definito da Roy Fielding nella sua tesi di dottorato del 2000.
REST ha sei vincoli:
2. Qual è la differenza tra REST e SOAP?
REST è uno stile architetturale; SOAP è un protocollo. REST usa tipicamente JSON su HTTP e sfrutta i metodi HTTP standard. SOAP usa esclusivamente XML e definisce un proprio formato di messaggistica con buste e intestazioni.
Aspetto
REST
SOAP
Formato
JSON, XML, altri
Solo XML
Trasporto
HTTP
HTTP, SMTP, altri
Caching
Caching HTTP nativo
Non cacheabile
Performance
Leggero
Maggior overhead
SOAP ha ancora senso per sistemi enterprise che richiedono contratti formali (WSDL) o sicurezza a livello di messaggio (WS-Security).
3. Cosa sono i metodi HTTP e quando si usa ciascuno?
I metodi HTTP definiscono l'azione da eseguire su una risorsa.
Metodo
Scopo
Esempio
GETRecuperare una risorsa
GET /users/123POSTCreare una nuova risorsa
POST /usersPUTSostituire interamente una risorsa
PUT /users/123PATCHAggiornare parzialmente una risorsa
PATCH /users/123DELETERimuovere una risorsa
DELETE /users/1234. Qual è la differenza tra PUT e POST?
POST crea una nuova risorsa in cui il server determina l'URI. PUT sostituisce una risorsa a uno specifico URI che il client specifica.
Se fai PUT su un URI che non esiste, il server può crearlo. Se fai PUT su un URI esistente, sostituisci l'intera risorsa.
5. Qual è la differenza tra PUT e PATCH?
PUT sostituisce l'intera risorsa. PATCH applica modifiche parziali.
6. Cosa significa "stateless" in REST?
Stateless significa che ogni richiesta deve contenere tutte le informazioni che il server necessita per elaborarla. Il server non memorizza alcun contesto del client tra una richiesta e l'altra.
Questo significa niente sessioni lato server. Se un utente è autenticato, il client deve inviare le credenziali (tipicamente un token) con ogni richiesta.
7. Cosa rende un'API RESTful?
Un'API è davvero RESTful quando rispetta tutti i vincoli REST, incluso HATEOAS (Hypermedia as the Engine of Application State). In pratica, la maggior parte delle API che si definiscono "REST" sono in realtà "simili a REST" o al Livello 2 del Richardson Maturity Model. E onestamente, va bene per la maggior parte dei casi d'uso.
Livelli del Richardson Maturity Model per le REST API. Immagine dell'autore.
8. Quali sono i codici di stato HTTP di base che dovresti conoscere?
Dovresti conoscere almeno questi sette codici essenziali che coprono la maggior parte degli scenari API:
Codice
Nome
Quando usarlo
200
OK
GET, PUT, PATCH riusciti
201
Created
POST riuscito (includi header Location)
204
No Content
DELETE riuscito
400
Bad Request
Sintassi malformata
404
Not Found
La risorsa non esiste
500
Internal Server Error
Errore lato server
9. Qual è la differenza tra una risorsa e un endpoint?
Una risorsa è l'entità dati (utente, ordine, prodotto). Un endpoint è il percorso URL che fornisce accesso a quella risorsa.
10. Quali sono le best practice per il design degli URI?
Usa nomi (sostantivi), non verbi. Mantieni gli URI in minuscolo con trattini per i nomi composti. Usa sostantivi plurali per le collezioni.
Evita annidamenti profondi. Invece di
/users/123/posts/456/comments/789, considera/comments/789o/comments?post_id=456.11. Cos'è l'idempotenza e quali metodi HTTP sono idempotenti?
Un'operazione è idempotente se eseguirla più volte produce lo stesso risultato che eseguirla una sola volta.
Metodo
Idempotente
Perché
GETSì
La lettura non cambia lo stato
PUTSì
Sostituire con gli stessi dati produce lo stesso risultato
DELETESì
Cancellare due volte lascia la risorsa cancellata
POSTNo
Creare due volte crea due risorse
PATCHNo*
Dipende dall'operazione
Un PATCH che imposta un valore è idempotente; un PATCH che incrementa un contatore non lo è.
12. Qual è la differenza tra metodi safe e idempotenti?
I metodi safe non modificano le risorse (GET, HEAD, OPTIONS). I metodi idempotenti possono essere chiamati più volte con lo stesso effetto (GET, PUT, DELETE).
Tutti i metodi safe sono idempotenti, ma non tutti i metodi idempotenti sono safe. DELETE è idempotente ma non safe perché modifica lo stato.
13. Quando usare parametri di query rispetto ai parametri di path?
I parametri di path identificano una specifica risorsa. I parametri di query filtrano, ordinano o paginano collezioni.
14. Cos'è la negoziazione dei contenuti?
La negoziazione dei contenuti consente ai client di richiedere diverse rappresentazioni di una risorsa. Il client invia un header
Accepte il server risponde con il formato appropriato.15. A cosa serve il metodo OPTIONS?
OPTIONS restituisce i metodi HTTP che un server supporta per un URL specifico. I browser lo usano per le richieste di preflight CORS per verificare se le richieste cross-origin sono consentite.
Domande intermedie sulle REST API
Queste domande testano l'applicazione pratica e il processo decisionale. Aspettale per posizioni di livello intermedio.
16. Qual è la differenza tra 401 e 403?
Questa è la coppia di codici più comunemente confusa. Ho visto ingegneri senior invertirli nelle code review.
401 Unauthorized
Significa non autenticato. Il server non sa chi sei. La tua risposta dovrebbe invitare l'utente ad accedere.
403 Forbidden
Significa non autorizzato. Il server sa chi sei ma non hai i permessi. Rieseguire l'autenticazione non aiuterà.
Diagramma decisionale: errore di autenticazione vs autorizzazione. Immagine dell'autore.
17. Qual è la differenza tra 400 e 422?
Ecco esempi che illustrano la differenza:
400 Bad Request
Indica sintassi malformata. Il server non può analizzare la richiesta (struttura JSON non valida, header obbligatori mancanti).
422 Unprocessable Entity
Indica sintassi valida ma errori semantici. Il JSON è valido ma i dati falliscono la validazione (formato email non valido, password troppo corta).
18. Quando dovresti usare 409 Conflict?
Usa 409 quando la richiesta è in conflitto con lo stato attuale della risorsa:
19. Come implementi la paginazione?
Due approcci principali:
Paginazione basata su offset
Semplice ma con problemi di performance su dataset grandi.
Paginazione basata su cursore
Scala meglio ed evita il "page drift" quando i dati cambiano.
Aziende come Stripe, GitHub e Slack usano la paginazione a cursore per dataset di grandi dimensioni.
20. Quali sono le strategie comuni di versionamento API?
Ci sono tre approcci principali, ciascuno con compromessi diversi:
Versionamento nell'URI
È il più comune. È esplicito e facile da fare debug.
Versionamento negli header
URL più puliti ma più difficile da testare nei browser.
Versionamento con parametri di query
Facile da aggiungere ma appesantisce gli URL.
21. Cos'è un ETag e come funziona il caching?
Un ETag è un identificatore di versione per una risorsa. Il server lo invia nelle risposte; il client lo reinvia nelle richieste successive per verificare se la risorsa è cambiata.
22. Quali metodi di autenticazione si usano per le REST API?
I quattro metodi di autenticazione più comuni sono API Keys, Bearer Token, OAuth 2.0 e JWT:
Metodo
Caso d'uso
Pro
Contro
API Keys
Server-to-server
Semplici
Nessuna scadenza, facili da perdere
Bearer Tokens
Session auth
Stateless
Necessaria conservazione sicura
OAuth 2.0
Accesso di terze parti
Autorizzazione delegata
Implementazione complessa
JWT
Autenticazione stateless
Autocontenuti
Impossibile revocarli senza blacklist
23. Cos'è JWT e come funziona?
JWT (JSON Web Token) è composto da tre parti: Header, Payload e Signature. Scopri di più su lavorare con JSON in Python.
Il server firma il token; i client lo inviano con le richieste. Il server valida la firma senza consultare il database.
24. Qual è la differenza tra RS256 e HS256?
HS256 (simmetrico): La stessa secret firma e verifica. Rischioso se più servizi devono verificare i token.
RS256 (asimmetrico): La chiave privata firma, la chiave pubblica verifica. Consigliato per sistemi distribuiti in cui più servizi validano i token.
25. Cos'è HATEOAS?
HATEOAS (Hypermedia as the Engine of Application State) significa che le risposte includono link ad azioni e risorse correlate.
In pratica, la maggior parte delle API non implementa HATEOAS completamente. Conosci il concetto ma non aspettarti di implementarlo nella maggior parte dei lavori. Anche le grandi aziende tech raramente costruiscono API pienamente conformi a HATEOAS.
26. Come gestisci gli errori in modo coerente?
Usa il formato RFC 7807 Problem Details per risposte di errore coerenti:
27. Cos'è il rate limiting e perché è importante?
Il rate limiting protegge la tua API da abusi e garantisce un uso equo. Risposta comune:
28. Come progetti filtraggio e ordinamento?
Usa parametri di query con convenzioni chiare:
Domande avanzate sulle REST API
Queste domande verificano il pensiero architetturale. Aspettale per posizioni senior.
29. Cosa è cambiato tra OAuth 2.0 e OAuth 2.1?
OAuth 2.1 consolida le best practice di sicurezza:
Funzionalità
OAuth 2.0
OAuth 2.1
PKCE
Opzionale
Obbligatorio per TUTTI i client
Implicit Grant
Supportato
Rimosso
Password Grant
Supportato
Rimosso
Redirect URI
Matching flessibile
Richiesto match esatto
Il punto chiave: usa il flusso Authorization Code con PKCE per tutti i tipi di client.
30. Come implementi l'idempotenza per endpoint di pagamento?
Usa chiavi di idempotenza per rendere sicuri i retry dei POST:
Il client genera un UUID e lo invia con la richiesta. Se arriva di nuovo la stessa chiave, restituisci la risposta in cache.
31. Come progetteresti un rate limiter distribuito?
Per sistemi distribuiti, non puoi usare contatori in memoria perché il traffico è bilanciato tra istanze. Questo è un tranello comune che mette in difficoltà i candidati.
Architettura:
32. Quando sceglieresti gRPC invece di REST?
La scelta tra gRPC e REST dipende dai requisiti specifici.
Scegli gRPC per:
Scegli REST per:
33. Come gestisci operazioni di lunga durata?
Usa il pattern di richiesta asincrona:
Il client invia la richiesta
Il server restituisce
202 Acceptedcon un URL di statoIl client interroga l'URL di stato fino al completamento
34. Cos'è il pattern Saga?
Saga gestisce transazioni distribuite tra microservizi senza locking. Ogni servizio esegue una transazione locale e pubblica un evento. Se un passaggio fallisce, transazioni compensative annullano i passaggi precedenti.
35. Quali sono le vulnerabilità di sicurezza comuni dei JWT?
Confusione dell'algoritmo: l'attaccante cambia RS256 in HS256 e firma con la chiave pubblica. Soluzione: metti sempre in whitelist gli algoritmi.
Algoritmo "none": l'attaccante rimuove completamente la firma. Soluzione: rifiuta l'algoritmo "none".
Domande REST API per Backend Developer
Queste domande si concentrano sui dettagli di implementazione lato server, ottimizzazione del database e pattern di performance che i backend engineer incontrano quotidianamente.
36. Cos'è il problema N+1 query?
Il problema N+1 si verifica quando recuperi N record ed esegui una query separata per la relazione di ciascun record.
Soluzioni:
Django: usa
select_related()per le foreign key,prefetch_related()per le many-to-many.SQLAlchemy: usa
joinedload()oselectinload().37. Come configuri il connection pooling?
Il connection pooling riutilizza le connessioni al database invece di crearne di nuove per ogni richiesta.
38. Quali strategie di caching conosci?
Ci sono tre strategie di caching principali, ciascuna ottimizzata per diversi pattern di accesso:
Strategia
Descrizione
Caso d'uso
Cache-Aside
L'app controlla prima la cache, poi il DB
Lettura intensiva, tollera dati stantii
Write-Through
Scrive insieme su cache e DB
Coerenza critica
Write-Behind
Scrive in cache, aggiornamento DB asincrono
Alto throughput di scrittura
39. Come implementi la verifica della firma dei webhook?
La verifica della firma dei webhook assicura che la richiesta provenga davvero dal mittente previsto. Ecco un'implementazione con HMAC:
40. Quali metriche indicano la salute di un'API?
Dovresti monitorare queste quattro metriche chiave per valutare la salute della tua API:
Metrica
Descrizione
Soglia di alert
Latenza P50
Tempo di risposta mediano
Baseline
Latenza P99
1% più lento
> 2s per 5 min
Tasso di errore
% di 4xx/5xx
> 1% per 5 min
Throughput
Richieste al secondo
Capacity planning
Domande REST API per Full Stack Developer
Queste domande verificano la tua comprensione sia delle esigenze del client che del server, in particolare sicurezza del browser, gestione dello stato e comunicazione cross-origin.
41. Quando un browser invia una richiesta di preflight CORS?
I browser inviano un OPTIONS di preflight per:
42. Come configuri il CORS in modo sicuro?
Una configurazione CORS sicura richiede whitelist esplicita delle origini e una gestione attenta delle credenziali. Ecco un setup sicuro con Express.js:
Non usare mai il jolly (
*) con le credenziali. Non consentire mai l'originenull.43. Dove dovresti archiviare i token sul client?
La conservazione dei token comporta compromessi di sicurezza tra vulnerabilità XSS e CSRF"
Storage
Rischio XSS
Rischio CSRF
Raccomandazione
localStorage
Alto
Nessuno
Evita per i token
Cookie HttpOnly
Basso
Richiede mitigazione
Consigliato
In memoria
Basso
Basso
Meglio per access token
Best practice: conserva i refresh token in cookie HttpOnly con
SameSite=Strict. Tieni gli access token in memoria.44. Quando dovresti usare WebSocket rispetto a SSE?
La scelta dipende dal fatto che ti serva comunicazione bidirezionale e da come vuoi gestire la riconnessione:
Funzionalità
WebSocket
SSE
Direzione
Bidirezionale
Server verso client
Riconnessione
Manuale
Automatica
Dati binari
Sì
No
Usa SSE per notifiche, feed in tempo reale, ticker azionari. Usa WebSocket per chat, giochi multiplayer, editing collaborativo.
45. Come gestisci gli upload di file?
Per file grandi, usa upload a chunk con tracciamento dei progressi:
Domande REST API basate su scenari
Queste domande valutano la tua capacità di applicare i principi REST a problemi reali. Gli intervistatori vogliono vedere il tuo processo di design e come gestisci i trade-off architetturali.
46. Progetta una REST API per un sistema di prenotazione hotel
Un sistema di prenotazione hotel deve gestire ricerche, verifica disponibilità e prenotazioni evitando le doppie prenotazioni. Ecco le risorse core:
Risorse:
/hotels- Elenco e ricerca hotel/hotels/{id}/rooms- Camere disponibili/bookings- Creare e gestire prenotazioni/guests/{id}- Profili ospiteDecisioni chiave:
47. Come implementeresti i soft delete?
Aggiungi un timestamp
deleted_atinvece di rimuovere i record:48. Come migri da v1 a v2 senza rompere i client?
Usa il pattern Strangler Fig:
49. Come progetteresti un'API di ricerca con filtri complessi?
Per una ricerca prodotti con filtri multipli:
Decisioni di design:
50. Come gestisci il versionamento API in un'architettura a microservizi?
Opzioni:
Versionamento a livello di gateway: l'API gateway instrada
/v1/*ai servizi vecchi,/v2/*ai nuoviVersionamento a livello di servizio: ogni servizio gestisce la propria negoziazione di versione
Contratti guidati dai consumatori: usa Pact o strumenti simili per garantire compatibilità
Per la maggior parte dei team, il versionamento a livello di gateway offre la separazione più pulita.
51. Come implementeresti il rate limiting per diversi livelli di utenti?
La soluzione prevede di definire limiti specifici per livello e verificarli usando contatori Redis:
Domande comportamentali sulle REST API
Queste domande valutano le tue capacità di comunicazione e come gestisci le sfide reali delle API. Concentrati nel dimostrare il tuo processo di problem-solving e come lavori con gli stakeholder.
52. Spiega REST a una persona non tecnica
"Pensa a una REST API come a un cameriere in un ristorante. Tu (il cliente) non puoi andare direttamente in cucina. Invece, dici al cameriere cosa vuoi dal menù, e lui te lo porta. Il menù è come la documentazione dell'API, che elenca cosa puoi ordinare. Il cameriere segue regole precise: chiedi qualcosa (GET), ordini qualcosa di nuovo (POST) o rimandi indietro qualcosa (DELETE). Se in cucina è finito qualcosa, il cameriere te lo dice (404 Not Found) così non aspetti all'infinito."
Questa analogia funziona sorprendentemente bene nelle riunioni con gli stakeholder.
53. Descrivi una volta in cui hai ottimizzato un'API
Usa il metodo STAR:
54. Come comunichi breaking changes ai consumatori dell'API?
Annuncia in anticipo: dai almeno 6-12 mesi di preavviso per i cambiamenti maggiori
Usa l'header Sunset:
Sunset: Sat, 31 Dec 2026 23:59:59 GMTFornisci guide di migrazione: documenta esattamente cosa cambia e come adattarsi
Mantieni entrambe le versioni: tieni in esecuzione la versione vecchia durante la transizione
Monitora l'uso: traccia quali client sono ancora sulla vecchia versione
55. Quale documentazione crei per le API?
La documentazione essenziale include:
56. Quando NON useresti REST?
REST non è sempre la scelta giusta. Sapere quando usare alternative dimostra maturità architetturale. Ho visto team forzare REST in casi d'uso in cui crea più problemi che soluzioni.
Scenario
Alternativa migliore
Chat o gaming in tempo reale
WebSocket
Servizi interni ad alte prestazioni
gRPC
Query complesse su dati annidati
GraphQL
Architetture event-driven
Message broker (Kafka, RabbitMQ)
Streaming bidirezionale
gRPC bidirezionale o WebSocket
Riferimento rapido REST API
Usa questa sezione come consultazione rapida quando devi verificare le proprietà dei metodi HTTP, i codici di stato o pattern comuni durante la preparazione ai colloqui o nello sviluppo reale.
Confronto dei metodi HTTP
Questa tabella riassume le proprietà chiave di ciascun metodo HTTP, aiu
Metodo
Safe
Idempotente
Cacheabile
Uso tipico
GET
Sì
Sì
Sì
Recupero risorsa
POST
No
No
Condizionale
Creazione risorsa
PUT
No
Sì
No
Sostituzione risorsa
PATCH
No
No
Condizionale
Aggiornamento parziale
DELETE
No
Sì
No
Rimozione risorsa
HEAD
Sì
Sì
Sì
Ottenere solo gli header
OPTIONS
Sì
Sì
No
Preflight CORS
Riferimento codici di stato
Ecco i codici di stato HTTP più usati, organizzati per categoria. Concentrati nel capire quando usarli piuttosto che memorizzare l'intera specifica.
2xx Success
4xx Client Errors
5xx Server Errors
Errori comuni da evitare
Anche sviluppatori esperti cadono in queste trappole. Fai attenzione a questi errori comuni quando progetti o implementi REST API:
Usare verbi negli URL (ad es.
/getUsersinvece di/users)Restituire 200 OK per stati di errore, che rompe la gestione degli errori lato client
Confondere 401 e 403 (Autenticazione vs. Autorizzazione)
Annidare eccessivamente gli URL oltre due livelli
Conservare i token in localStorage (crea vulnerabilità XSS)
Ignorare l'idempotenza per le richieste POST
Restituire messaggi di errore generici senza dettagli utili
Conclusione
So che memorizzare definizioni non ti garantirà di superare ogni colloquio tecnico. La realtà è che l'ingegneria nel mondo reale spesso richiede di infrangere le "regole" rigide di cui abbiamo appena parlato, e agli intervistatori interessa più il tuo ragionamento che la tua capacità di recitare le specifiche RFC. Per ruoli altamente specializzati, una profonda conoscenza del dominio o l'esperienza con framework specifici può comunque essere il fattore decisivo.
Ma padroneggiare questi fondamenti REST conta anche se non incontrerai esattamente queste domande. Funziona come una mappa per capire come opera il web moderno. Quando ti viene chiesto di progettare un nuovo sistema o di fare debug di un incidente in produzione, capire la distinzione tra un 401 e un 403 (come ho spiegato prima) ti dà la chiarezza per risolvere i problemi più velocemente. Riconoscerai esattamente perché standardizzare le interazioni della tua API, non solo scrivere codice che funziona, è il segno distintivo di un ingegnere senior.
Se vuoi approfondire la costruzione di questi sistemi, dai un'occhiata al nostro corso Introduction to APIs in Python.