La scelta dello stile architettonico dell'API dipende dal tipo di consumatori, dal volume di dati, dai requisiti di velocità di sviluppo dell'interfaccia e dalla scalabilità.
Esempio di controllore REST (Node.js/Express):
app.get('/api/users/:id', function(req, res) { // ... res.json(user); });
Esempio di definizione del servizio gRPC (protobuf):
service UserService { rpc GetUser (UserRequest) returns (UserResponse); }
Esempio di richiesta su GraphQL:
query { user(id: "123") { id name posts { title } } } }
Caratteristiche chiave:
È possibile utilizzare GraphQL per qualsiasi API aziendale?
Non sempre! GraphQL è utile per dati aggregati complessi, ma per interfacce CRUD semplici e alta carico, REST è spesso più semplice ed efficace.
gRPC è adatto per client mobili/web?
Di solito no, gRPC richiede supporto per HTTP/2 e non si integra con i browser senza proxy speciali, quindi raramente viene utilizzato sul front-end.
REST API è sempre più facile da versionare rispetto alle altre?
Non necessariamente. La versioning di GraphQL si risolve a livello di schema, mentre REST di solito attraverso la modifica di URI o intestazioni, il che non è sempre conveniente per l'evoluzione di schemi di dati complessi.