coldwa.st
Tutte le guideProgrammazioneWebDatiStrumentiDatabaseHaskellConcettiCabal e buildToolchainCompilatorePrestazioniEditor e HLS

Programmazione · web · API

gRPC vs REST

Di ColdwastAggiornato il 18 giugno 20268 min di lettura#grpc#rest#api
Uno switch di rete con cavi in fibra ed Ethernet collegati
Due modi in cui i servizi comunicano in rete – REST ottimizza l’universalità, gRPC la velocità e i contratti tipizzati.

Quando progetti la comunicazione tra due programmi in rete, il bivio moderno è REST vs gRPC. Entrambi espongono funzionalità via HTTP, ma fanno scommesse opposte: REST privilegia la semplicità leggibile e universale; gRPC l’efficienza veloce, tipizzata, binaria. Questa guida li confronta onestamente su formato, prestazioni, streaming, supporto browser e tooling – e quando scegliere ciascuno. (Nuovo alle API? Inizia da cos’è un’API.)

La differenza fondamentale

  • REST – uno stile di architettura su HTTP: risorse a URL, verbi HTTP (GET/POST/PUT/DELETE), di solito JSON. Leggibile, senza stato, universale.
  • gRPC – un framework di chiamate a procedura remota: chiami metodi (come funzioni locali) definiti in un contratto .proto, scambiando Protocol Buffers binari su HTTP/2.

REST è orientato alle risorse («recupera questa cosa»); gRPC è orientato all’azione («chiama questo metodo»). REST è testo; gRPC è binario e fortemente tipizzato.

Prestazioni e trasporto

I Protocol Buffers di gRPC sono binario compatto, inviato su connessioni HTTP/2 multiplexate – payload più piccoli, meno parsing, più chiamate su una connessione. Il JSON di REST su HTTP/1.1 è più pesante e verboso, sebbene molto ottimizzato e cacheabile. Per il traffico tra servizi ad alto volume, l’efficienza di gRPC è reale; per una tipica API pubblica, REST spesso basta e sfrutta la cache HTTP gratuita.

Un cavo dati collegato all’hardware di un server
La scelta è un compromesso – allineala a chi chiama la tua API e al volume di traffico.

Streaming, contratti e codegen

gRPC supporta nativamente lo streaming bidirezionale (client, server e in entrambe le direzioni), ideale per il tempo reale e l’alto throughput. Il suo file .proto è un contratto rigoroso da cui client e server vengono generati in molti linguaggi – perfetto per backend poliglotti e per rilevare incompatibilità in fase di compilazione. REST non ha un contratto integrato (OpenAPI/Swagger va aggiunto) e lo streaming è limitato (SSE/WebSocket vanno aggiunti), ma questa flessibilità è anche ciò che lo rende facile da iniziare.

Supporto browser e ubiquitĂ 

Questo è il terreno di REST. Qualsiasi browser chiama un’API REST tramite fetch; ogni linguaggio e strumento la comprende; la si esegue il debug con curl e si legge il JSON. I browser non parlano gRPC nativo – serve gRPC-Web più un proxy (es. Envoy), che aggiunge parti in movimento. Se i tuoi frontend web sono i consumatori principali, REST (o GraphQL) è più semplice.

Consigliato

Un posto dove ospitare i tuoi servizi

REST o gRPC, la tua API e i tuoi microservizi hanno bisogno di una casa affidabile con pieno controllo di runtime e rete. Un VPS o server cloud va bene. Infomaniak – un hoster svizzero, rispettoso della privacy – offre VPS e server cloud adatti.

Scopri Infomaniak Cloud →

Link di affiliazione – sostiene queste guide gratuite.

Come scegliere

  • Scegli REST per API pubbliche, client browser, CRUD semplice e quando contano leggibilitĂ , ubiquitĂ  e cache HTTP.
  • Scegli gRPC per chiamate interne tra servizi dove contano prestazioni, bassa latenza, streaming e contratto rigorosamente tipizzato (microservizi, tempo reale, poliglotta).
  • Entrambi – REST/GraphQL al confine per i client, gRPC tra i servizi interni: un’architettura molto diffusa.

Domande frequenti

Qual è la differenza tra gRPC e REST?

REST è uno stile architetturale per API web basato su HTTP, che scambia di solito JSON leggibile tramite URL di risorse. gRPC è un framework RPC ad alte prestazioni che gira su HTTP/2 e scambia Protocol Buffers binari, definiti da un contratto .proto rigoroso. In breve: REST è orientato alle risorse, testuale e universale; gRPC è orientato all’azione (al metodo), binario, tipizzato e veloce. Entrambi risolvono lo stesso problema – programmi che comunicano in rete – con compromessi diversi.

gRPC è più veloce di REST?

In genere sì per il traffico tra servizi. gRPC invia Protocol Buffers binari compatti su connessioni HTTP/2 multiplexate: payload più piccoli, meno overhead rispetto a JSON su HTTP/1.1 e streaming bidirezionale. Il divario conta soprattutto per i microservizi interni ad alto volume; per un’API pubblica poco carica, REST + cache HTTP è spesso più che sufficiente.

Si può usare gRPC in un browser?

Non direttamente. I browser non parlano gRPC nativo perché non espongono il controllo HTTP/2 di basso livello di cui gRPC ha bisogno. Si usa gRPC-Web con un proxy (es. Envoy) come ponte, il che aggiunge complessità e limita alcune funzioni (come lo streaming client). REST invece funziona nativamente da qualsiasi browser tramite fetch. Se la tua API è consumata soprattutto da frontend web, REST (o GraphQL) è più semplice.

Quando usare gRPC invece di REST?

Scegli gRPC per la comunicazione interna tra servizi dove contano prestazioni, bassa latenza, streaming e un contratto rigorosamente tipizzato – microservizi, dati in tempo reale, backend poliglotti. Scegli REST per API pubbliche, client browser, CRUD semplice di risorse e quando contano leggibilità, ubiquità e cache HTTP gratuita. Molti sistemi usano entrambi: REST/GraphQL al confine per i client, gRPC tra i servizi interni.

In sintesi

REST e gRPC non sono rivali ma strumenti per compiti diversi. REST vince su universalità, supporto browser, leggibilità e cache – l’impostazione giusta per API pubbliche e web. gRPC vince su velocità, streaming e contratti tipizzati – l’impostazione giusta per microservizi interni ad alte prestazioni. Scegli in base ai tuoi chiamanti e al tuo traffico, e non esitare a usare entrambi.