---
url: 'https://www.redhat.com/topics/api/what-is-graphql'
title: 'Differenze tra REST API e GraphQL'
date: '2024-11-20T22:53:14+00:00'
updated: '2026-10-22T16:54:19+00:00'
type: website
summary: 'GraphQL è un linguaggio di interrogazione lato server per interfacce di programmazione delle applicazioni (API), in grado di fornire ai client unicamente i dati di cui hanno bisogno.'
tags:
  - Article
  - Integration
  - Integrazione
image: 'https://www.redhat.com/profiles/rh/themes/redhatdotcom/img/logo-rh-og-image.png'
published: true
---
  

  

1. [Argomenti](/it/topics "Argomenti")
2. [Integrazione](/it/topics/integration "Integrazione")
3. [Graphql: un linguaggio di interrogazione per API](# "Graphql: un linguaggio di interrogazione per API")

 

 

# Graphql: un linguaggio di interrogazione per API





 Pubblicato  19 febbraio 2025•*6* minuti (tempo di lettura)

CopiatoCopia non riuscitaCopia URL





 

 

 

   

## Vai al paragrafo

PanoramicaTermini comuniVantaggi e svantaggiGraphQL e l'open source

 

 

## Panoramica



GraphQL è un linguaggio di interrogazione lato server per [interfacce di programmazione delle applicazioni (API),](/it/topics/api/what-are-application-programming-interfaces) in grado di fornire ai client unicamente i dati di cui hanno bisogno.

Progettato per rendere le API rapide, flessibili e intuitive per gli sviluppatori, può anche essere distribuito nell'[ambiente di sviluppo integrato (IDE)](/it/topics/platform-engineering/what-is-ide) noto come [GraphiQL](https://github.com/graphql/graphiql). Nato come alternativa a [REST](/it/topics/integration/whats-the-difference-between-soap-rest), GraphQL consente agli sviluppatori di ottenere richieste contenenti dati provenienti da più sorgenti, in una singola chiamata API.

Inoltre, GraphQL offre ai gestori delle API la possibilità di aggiungere o disattivare campi senza influenzare le query esistenti. Gli sviluppatori possono utilizzare qualsiasi metodo per realizzare le API e la specifica di GraphQL garantisce che funzionino in modo prevedibile verso i client.

[Manuale per l'implementazione delle API: 7 consigli](/it/resources/api-owners-manual-ebook)







 

## Schemi, resolver e altri termini comuni di GraphQL



Gli sviluppatori di API usano GraphQL per creare uno **schema** in grado di descrivere tutti i possibili dati su cui i client potrebbero eseguire query tramite il servizio specificato.

Uno schema GraphQL è composto da tipi di oggetto che definiscono la tipologia di oggetti che è possibile richiedere e i tipi di campi disponibili al suo interno.

Mano a mano che le **query** vengono ricevute, GraphQL le convalida rispetto allo schema, quindi le esegue.

Lo sviluppatore dell'API aggiunge i campi dello schema a una funzione chiamata **resolver**. Durante l'esecuzione, il resolver genera il valore.

[](/rhdc/managed-files/ExecutionEngineDiagrams2.svg)

Oltre a definire e convalidare la sintassi delle query dell'API (indicata nel repository [graphql-spec](https://github.com/graphql/graphql-spec)), GraphQL offre notevole flessibilità al progettatore dell'API. GraphQL non fornisce alcuna indicazione su come memorizzare i dati o quale linguaggio di programmazione usare. Gli sviluppatori possono pertanto utilizzare PHP ([graphql-php](https://github.com/webonyx/graphql-php)), Scala ([Sangria](https://sangria-graphql.github.io/getting-started/)), Python ([Graphene Python](https://graphene-python.org/)), Ruby ([graphql-ruby](https://github.com/rmosolgo/graphql-ruby)), JavaScript ([graphql.js](https://www.npmjs.com/package/graphql)) e molti altri. GraphQL non propone requisiti relativi a rete, autorizzazioni o impaginazione.

Dal punto di vista del client, GraphQL si occupa principalmente di **query** e **mutazioni**. Se analizzassimo tali operazioni in base al modello CRUD *(create, read, update e delete)*, una query equivarrebbe a *read*. Tutti gli altri elementi (*create, update* e *delete*) vengono gestiti dalle mutazioni.

Come rendere agile un'architettura monolitica







 

## Risorse da Red Hat











[Continua a leggere](/it/resources "Continua a leggere")







 

   

## Vantaggi e svantaggi di GraphQL per gli ambienti enterprise



Se si sta valutando l'adozione di GraphQL in un ambiente aziendale o di livello enterprise, occorre tenere conto dei pro e contro.

#### I vantaggi di graphql

- Uno schema GraphQL prevede un'unica sorgente di dati in un'applicazione GraphQL. Offre alle organizzazioni la possibilità di eseguire la federazione di tutte le API.
- Le chiamate di GraphQL vengono gestite in un unico percorso di andata/ritorno. I client ricevono solo i dati che hanno richiesto.
- Tipi di dati fortemente definiti riducono gli errori di comunicazione tra il client e il server.
- GraphQL dispone di funzionalità di introspezione. Un client può richiedere un elenco di tipi di dati disponibili, agevolando la generazione automatica della documentazione.
- GraphQL consente all'API di un'applicazione di evolversi senza interrompere le query esistenti.
- Molte estensioni open source di GraphQL offrono funzionalità non disponibili con le [API REST](/it/topics/api/what-is-a-rest-api).
- GraphQL non richiede un'[architettura applicativa](/it/topics/cloud-native-apps/what-is-an-application-architecture) specifica. Può essere introdotto su un'API REST esistente e può lavorare con gli strumenti di [gestione delle API](/it/topics/api/what-is-api-management).

Service mesh o gestione delle API?

#### Gli svantaggi di graphql

- Per gli sviluppatori che sono abituati a interagire con le API REST, GraphQL implica un graduale percorso di apprendimento.
- Spostando molto dell'attività di una query sul lato server, GraphQL rende più onerosi i compiti degli sviluppatori server.
- A seconda del tipo di implementazione, GraphQL potrebbe richiedere diverse strategie di gestione delle API rispetto alle API REST, in particolare se si considerano i limiti di tariffe e prezzi.
- Il caching è molto più complesso rispetto a REST.
- I gestori delle API devono anche scrivere schemi GraphQL di facile manutenzione.

---

### Esempio di query GraphQL

Il modo migliore per capire GraphQL è analizzare da vicino alcune query e risposte. Di seguito prendiamo in esame 3 esempi adattati dal sito web del progetto GraphQL, [graphql.org](http://graphql.org/).

Il primo esempio mostra in che modo un client può costruire una query GraphQL, chiedendo a un'API di restituire campi specifici in una determinata forma.

```
{
  me {
    name
  }
}
```

Un'API GraphQL restituirebbe un risultato come questo in formato JSON:

```
{
  "me": {
    "name": "Dorothy"
  }
}
```

Un client può inoltre includere argomenti in una query GraphQL, come in questo esempio:

```
{
  human(id: "1000") {
    name
    location
  }
}
```

Il risultato?

```
{
  "data": {
    "human": {
      "name": "Dorothy,
      "location": "Kansas"
    }
  }
}
```

Da questo passaggio in poi, GraphQL offre all'utente più flessibilità, consentendo di definire i frammenti riutilizzabili e di assegnare le variabili desiderate.

Ipotizziamo di dover richiedere un elenco di ID e, successivamente, una serie di record per ogni ID. GraphQL consente di costruire una query in grado di estrarre qualsiasi elemento necessario tramite una sola chiamata API.

Quindi, una query di questo tipo:

```
query HeroComparison($first: Int = 3) {
  leftComparison: hero(location: KANSAS) {
    ...comparisonFields
  }
  rightComparison: hero(location: OZ) {
    ...comparisonFields
  }
}
fragment comparisonFields on Character {
  name
  friendsConnection(first: $first) {
    totalCount
    edges {
      node {
        name
      }
    }
  }
}
```

  
Produrrebbe questo risultato:

```
{
  "data": {
    "leftComparison": {
      "name": "Dorothy",
      "friendsConnection": {
        "totalCount": 4,
        "edges": [
          {
            "node": {
              "name": "Aunt Em"
            }
          },
          {
            "node": {
              "name": "Uncle Henry"
            }
          },
          {
            "node": {
              "name": "Toto"
            }
          }
        ]
      }
    },
    "rightComparison": {
      "name": "Wizard",
      "friendsConnection": {
        "totalCount": 3,
        "edges": [
          {
            "node": {
              "name": "Scarecrow"
            }
          },
          {
            "node": {
              "name": "Tin Man"
            }
          },
          {
            "node": {
              "name": "Lion"
            }
          }
        ]
      }
    }
  }
}
```

Se utilizzi GitHub, potrai velocemente acquisire dimestichezza con GraphQL attraverso esperienze pratiche utilizzando [lo strumento GraphQL Explorer in GitHub](https://developer.github.com/v4/explorer/).







 

## GraphQL nei progetti open source



GraphQL è stato sviluppato da Facebook, che ha iniziato a utilizzarlo per le applicazioni mobile nel 2012. La specifica di GraphQL è diventata open source nel 2015. È ora supervisionato dalla [GraphQL Foundation](https://foundation.graphql.org/).

Molti sono i progetti open source che utilizzano GraphQL. L'elenco sottostante non si intende esaustivo, ma include progetti ideati per semplificare l'adozione di GraphQL.

- [Apollo](https://www.apollographql.com/), una piattaforma GraphQL che comprende una libreria client frontend (Apollo Client) e un framework del server backend (Apollo Server).
- [Offix](https://offix.dev/), un client offline che consente alle mutazioni e alle query GraphQL di essere eseguite anche quando un'applicazione non ha connessione.
- [Graphback](https://graphback.dev/), un client a riga di comando per la generazione di server Node.js abilitati per GraphQL.
- [OpenAPI-to-GraphQL](https://github.com/IBM/openapi-to-graphql), un'interfaccia a riga di comando e una libreria per rendere in linguaggio GraphQL le API descritte da OpenAPI Specifications o Swagger.







 

 

   











### Il blog ufficiale di Red Hat



Leggi gli articoli del blog di Red Hat per scoprire novità e consigli utili sulle nostre tecnologie, e avere aggiornamenti sul nostro ecosistema di clienti, partner e community.











[Continua a leggere](/it/blog "Il blog ufficiale di Red Hat")







   

 

 

   

### Tutte le versioni di prova dei prodotti Red Hat

Grazie alle versioni di prova gratuite dei prodotti Red Hat potrai acquisire esperienza pratica, prepararti per le certificazioni o capire se il prodotto che hai scelto è giusto per le esigenze della tua organizzazione.



 

    

[Continua a leggere](/it/products/trials "Tutte le versioni di prova dei prodotti Red Hat") 

 

 

 

 



 

   

## Continua a leggere



  











### Che cos'è un fornitore di software indipendente (ISV)?



 I partner ISV sono fornitori di software indipendenti che offrono ogni tipo di software e/o soluzioni SaaS in grado di soddisfare i requisiti dei clienti. 









[Leggi l'articolo](/it/topics/digital-transformation/isv-partners "article | what is an ISV?")





 

  











### Cos'è un'API?



 Il termine API, acronimo di Application Programming Interface (interfaccia di programmazione delle applicazioni), indica un insieme di definizioni e protocolli per creare e integrare applicazioni software. 









[Leggi l'articolo](/it/topics/api/what-are-application-programming-interfaces "article | what are APIs? &#91;DO NOT OVERWRITE IT META&#93;")





 

  











### Cos'è l'integrazione delle applicazioni?



 L'integrazione delle applicazioni serve a connettere sistemi e applicazioni diversi, che attraverso lo scambio di dati e l'utilizzo di servizi condivisi sono in grado di comunicare e funzionare compatibilmente. 









[Leggi l'articolo](/it/topics/cloud-native-apps/application-integration "article | What is application integration")





 

 

 

   

### Integrazione: risorse consigliate



 

### Contenuti correlati

 

 

- Blog post
    
     [Beyond the horizon: Navigating the bridge between today's tech and tomorrow's AI](/it/blog/beyond-horizon-navigating-bridge-between-todays-tech-and-tomorrows-ai)
- Scheda tecnica
    
     [Red Hat Application Foundations](/it/resources/application-foundations-datasheet)
- Storia di successo
    
     [KPMG improves outcomes for state citizen services through a modern systems integration platform](/it/success-stories/kpmg)
- Caso cliente
    
     [Volkswagen builds virtual test environment with Red Hat OpenShift](/it/resources/volkswagen-group-case-study)
 
 

 

 

 

 

### Articoli correlati

 

 

- [What is an independent software vendor (ISV)?](/it/topics/digital-transformation/isv-partners)
- [What is an API?](/it/topics/api/what-are-application-programming-interfaces)
- [What is application integration?](/it/topics/cloud-native-apps/application-integration)
- [What is Apache Kafka?](/it/topics/integration/what-is-apache-kafka)
- [REST vs. SOAP](/it/topics/integration/whats-the-difference-between-soap-rest)
- [What is a REST API?](/it/topics/api/what-is-a-rest-api)
- [What does an API gateway do?](/it/topics/api/what-does-an-api-gateway-do)
- [What is service-oriented architecture?](/it/topics/cloud-native-apps/what-is-service-oriented-architecture)
- [What is middleware?](/it/topics/middleware/what-is-middleware)
- [Why choose Red Hat for middleware?](/it/topics/middleware/why-choose-red-hat-middleware)
- [Red Hat OpenShift application services](/it/technologies/cloud-computing/openshift/application-services)
- [What is a Kafka service?](/it/topics/integration/what-is-a-kafka-service)
- [What is streaming data?](/it/topics/integration/what-is-streaming-data)
- [Do banking APIs benefit from cloud technology?](/it/topics/api/banking-api)
- [What is a service registry?](/it/topics/integration/what-is-a-service-registry)
- [What is an event mesh?](/it/topics/integration/what-is-an-event-mesh)
- [How microservices support IT integration in healthcare](/it/topics/microservices/microservices-in-healthcare)
- [What is change data capture?](/it/topics/integration/what-is-change-data-capture)
- [Why Red Hat for APIs?](/it/topics/api/why-choose-red-hat-apis)
- [What is the Kubernetes API?](/it/topics/containers/what-is-the-kubernetes-api)
- [What is event-driven architecture?](/it/topics/integration/what-is-event-driven-architecture)
- [What is API monetization?](/it/topics/api/what-is-api-monetization)
- [Why choose Red Hat for integration?](/it/topics/integration/why-choose-red-hat-integration)
- [What is API management?](/it/topics/api/what-is-api-management)
- [What is API security?](/it/topics/security/api-security)
- [What is API design?](/it/topics/api/what-is-api-design)
- [What is a service mesh?](/it/topics/microservices/what-is-a-service-mesh)
- [What is integration?](/it/topics/integration/what-is-integration)
 
 

 

   

[Scopri di più su questo argomento](/it/topics/integration "Scopri di più su questo argomento")