Perché usare GraphQL invece di GraphQL? REST - AWS AppSync

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Perché usare GraphQL invece di GraphQL? REST

RESTè uno degli stili architettonici fondamentali del web. APIs Tuttavia, man mano che il mondo diventa più interconnesso, la necessità di sviluppare applicazioni robuste e scalabili diventerà una questione sempre più urgente. Sebbene REST venga spesso utilizzato per creare siti WebAPIs, sono stati identificati diversi inconvenienti ricorrenti nelle RESTful implementazioni:

  1. Richieste di dati: utilizzando RESTfulAPIs, in genere si richiedono i dati necessari tramite gli endpoint. Il problema sorge quando si hanno dati che potrebbero non essere impacchettati in modo così ordinato. I dati necessari possono essere protetti da più livelli di astrazione e l'unico modo per recuperarli è utilizzare più endpoint, il che significa effettuare più richieste per estrarre tutti i dati.

  2. Overfetching e underfetching: a complicare ulteriormente il problema delle richieste multiple, i dati di ogni endpoint sono definiti in modo rigoroso, il che significa che restituirai tutti i dati che sono stati definiti a tale scopoAPI, anche se tecnicamente non li volevi.

    Ciò può comportare un recupero eccessivo, il che significa che le nostre richieste restituiscono dati superflui. Ad esempio, supponiamo che tu stia richiedendo i dati del personale dell'azienda e desideri conoscere i nomi dei dipendenti di un determinato reparto. L'endpoint che restituisce i dati conterrà i nomi, ma potrebbe contenere anche altri dati come il titolo professionale o la data di nascita. Poiché API è fisso, non puoi semplicemente richiedere i nomi; il resto dei dati viene fornito con esso.

    La situazione opposta, in cui non restituiamo una quantità sufficiente di dati, si chiama under-fetching. Per ottenere tutti i dati richiesti, potrebbe essere necessario effettuare più richieste al servizio. A seconda di come sono strutturati i dati, potreste imbattervi in interrogazioni inefficienti con conseguenti problemi come il temuto problema n+1.

  3. Iterazioni di sviluppo lente: molti sviluppatori le personalizzano RESTful APIs per adattarsi al flusso delle loro applicazioni. Tuttavia, man mano che le applicazioni crescono, sia il front-end che il backend potrebbero richiedere modifiche estese. Di conseguenza, APIs potrebbero non adattarsi più alla forma dei dati in modo efficiente o di impatto. Ciò si traduce in iterazioni di prodotto più lente a causa della necessità di modifiche. API

  4. Prestazioni su larga scala: a causa di questi problemi aggravanti, ci sono molte aree in cui la scalabilità ne risentirà. Le prestazioni sul lato applicativo potrebbero risentirne perché le richieste restituiranno troppi o troppo pochi dati (con conseguente aumento delle richieste). Entrambe le situazioni causano inutili sollecitazioni sulla rete con conseguenti scarse prestazioni. Per quanto riguarda gli sviluppatori, la velocità di sviluppo può essere ridotta perché i dati richiesti APIs sono fissi e non sono più sufficienti.

Il punto di forza di GraphQL è quello di superare gli svantaggi di. REST Ecco alcune delle soluzioni chiave che GraphQL offre agli sviluppatori:

  1. Endpoint singoli: GraphQL utilizza un singolo endpoint per interrogare i dati. Non è necessario crearne più di uno APIs per adattarlo alla forma dei dati. Ciò si traduce in un minor numero di richieste che passano attraverso la rete.

  2. Recupero: GraphQL risolve i problemi perenni di sovra e insufficiente recupero semplicemente definendo i dati necessari. GraphQL ti consente di modellare i dati in base alle tue esigenze in modo da ricevere solo ciò che hai richiesto.

  3. Astrazione: APIs GraphQL contiene alcuni componenti e sistemi che descrivono i dati utilizzando uno standard indipendente dal linguaggio. In altre parole, la forma e la struttura dei dati sono standardizzate in modo che sia il front-end che il backend sappiano come verranno inviati sulla rete. Ciò consente agli sviluppatori di entrambe le parti di lavorare con i sistemi GraphQL e non con essi.

  4. Iterazioni rapide: a causa della standardizzazione dei dati, potrebbero non essere necessarie modifiche su un lato dello sviluppo sull'altro. Ad esempio, le modifiche alla presentazione del frontend potrebbero non comportare modifiche estese al backend perché GraphQL consente di modificare facilmente le specifiche dei dati. Puoi semplicemente definire o modificare la forma dei dati per adattarla alle esigenze dell'applicazione man mano che cresce. Ciò si traduce in un minor potenziale di lavoro di sviluppo.

Questi sono solo alcuni dei vantaggi di GraphQL. Nelle prossime sezioni, scoprirai come è strutturato GraphQL e le proprietà che lo rendono un'alternativa unica a. REST