Query GraphQL e mutazioni su versioni distinte di Parse
Con l’evoluzione di Parse, alcuni aspetti cambiano per migliorare le prestazioni, la compatibilità e la facilità di sviluppo.
Uno di questi aspetti è il supporto GraphQL, che si è evoluto nel tempo da Parse 3.5.0 all’ultima versione disponibile, la 3.9.
Qui a Back4app, abbiamo tre versioni principali che implementano le modifiche alle query e alle mutazioni GraphQL, in particolare: 3.7.2, 3.8 e 3.9 e oggi vi illustrerò le differenze tra queste versioni, mostrando cosa è cambiato e cosa no.
Contents
Introduzione
L’evoluzione è obbligatoria quando si distribuiscono soluzioni a lungo termine ai clienti e Parse non fa eccezione.
Man mano che gli standard GraphQL hanno iniziato a diventare più popolari e utilizzati, la comunità ha richiesto una migliore integrazione, un utilizzo semplificato e una maggiore intuitività. In qualità di manutentori e collaboratori attivi di Parse, Back4app ha ascoltato queste voci e si è impegnata a fondo per ottenere questi risultati nella piattaforma open-source Parse.
I nostri sviluppatori hanno introdotto nuove funzionalità nel corso del tempo, come l’integrazione con Cloud Code, ma la comunità ha continuato a chiedere una sintassi GraphQL più coerente con i framework e le piattaforme, e con Parse 3.9 l’abbiamo ottenuta e messa a disposizione della comunità.
Mentre la sintassi si è evoluta, sono state apportate alcune modifiche fondamentali, per cui, a seconda della versione di Parse utilizzata, è necessario scegliere la sintassi corretta: 3.7.2, 3.8 e 3.9 hanno sintassi leggermente diverse per ottenere gli stessi risultati.
Per questo motivo, sto scrivendo questo articolo, in modo che possiate avere tutto documentato in un unico posto e, mentre lo faccio, raccomando vivamente agli utenti di aggiornare Parse alla versione 3.9 con la nuova sintassi, la nostra versione più compatibile con le piattaforme e i framework.
Di seguito vi mostrerò alcuni esempi.
Salute dell’API
L’interrogazione dell’API health non è cambiata tra le varie versioni ed è possibile richiamarla in modo coerente interrogando:
che darà la stessa risposta in tutte le versioni:
Creazione di un oggetto
La mutazione per la creazione di un oggetto è cambiata nel tempo per essere più coerente tra i diversi framework GraphQL e include modifiche di rottura che si dovrebbero considerare prima di cambiare la versione di Pare.
Usare una mutazione generica
In Parse 3.7.2 si poteva semplicemente chiedere la creazione di un oggetto e una classe sarebbe stata creata automaticamente:
In Parse 3.8, c’è un leggero cambiamento, poiché la query degli oggetti è stata rimossa, ma è ancora possibile chiedere la creazione di un oggetto e la classe verrà creata automaticamente:
In Parse 3.9, invece, è necessario creare prima la classe, aggiungendo esplicitamente i suoi campi:
e solo allora si può salvare un oggetto usando il suo metodo specifico (sotto).
Usare un metodo specifico (Mutazione di classe)
Anche i metodi specifici (metodi di classe, in questo caso una mutazione di classe) sono cambiati:
In Parse 3.7.2 era:
In Parse 3.8 la proprietà objects è stata rimossa:
Infine, in Parse 3.9, ObjectId è stato rinominato in id, in modo da essere conforme agli standard:
Ottenere un oggetto
Anche il recupero degli oggetti si è evoluto nel tempo per migliorare la coerenza e la compatibilità.
Utilizzo di una query generica
È possibile specificare il nome della classe e l’ID dell’oggetto per recuperare un oggetto specifico, utilizzando il metodo generico GET, che funziona per qualsiasi classe.
Parse 3.7.2:
In seguito, Parse 3.8 ha eliminato gli oggetti, consentendo una chiamata più semplice:
Parse 3.8:
Con l’arrivo di Parse 3.9, il metodo generico GET è stato rimosso ed è necessario utilizzare il metodo specifico della classe per recuperare gli oggetti (maggiori informazioni in seguito).
Utilizzo di un metodo specifico (Query di classe)
Anche i metodi specifici cambiano a seconda della versione di Parse.
In Parse 3.7.2 avevamo:
In seguito, in Parse 3.8 è stata rimossa anche la proprietà objects per facilitare la chiamata:
E in Parse 3.9 l’objectId è stato sostituito da id per una maggiore coerenza tra i framework:
Trovare un oggetto
Anche la ricerca di oggetti si è evoluta nel tempo per una maggiore coerenza e compatibilità.
Usare una query generica
È possibile specificare il nome della classe per recuperare un elenco di oggetti, utilizzando il metodo generico FIND, che funziona per qualsiasi classe.
Parse 3.7.2:
In seguito, Parse 3.8 ha eliminato gli oggetti, consentendo una chiamata più semplice:
Parse 3.8:
Con l’arrivo di Parse 3.9, il metodo generico FIND è stato rimosso ed è necessario utilizzare il metodo specifico della classe per recuperare gli oggetti (maggiori informazioni in seguito).
Utilizzo di un metodo specifico (Query di classe)
Anche i metodi specifici cambiano a seconda della versione di Parse.
In Parse 3.7.2 avevamo:
In seguito, in Parse 3.8 è stata rimossa anche la proprietà objects per facilitare la chiamata:
E in Parse 3.9 l’objectId è stato sostituito da id per una maggiore coerenza tra i framework:
Aggiornamento di un oggetto
Anche l’aggiornamento degli oggetti ha dovuto cambiare per migliorare la coerenza e la compatibilità.
Usare una query generica
È possibile specificare il nome della classe e l’ObjectID per aggiornare un oggetto, utilizzando il metodo generico UPDATE, che funziona per qualsiasi classe.
Parse 3.7.2:
In seguito, Parse 3.8 ha eliminato gli oggetti, consentendo una chiamata più semplice:
Parse 3.8:
Con l’arrivo di Parse 3.9, il metodo generico UPDATE è stato rimosso ed è necessario utilizzare il metodo specifico della classe per recuperare gli oggetti (maggiori informazioni in seguito).
Utilizzo di un metodo specifico (Query di classe)
Anche i metodi specifici cambiano a seconda della versione di Parse.
In Parse 3.7.2 avevamo:
In seguito, in Parse 3.8 è stata rimossa anche la proprietà objects per facilitare la chiamata:
In Parse 3.9 la chiamata è stata mantenuta simile alla 3.8, ma l’objectId è stato rinominato in id nella chiamata:
Metodi applicativi
I metodi applicativi dovevano seguire i cambiamenti e conformarsi ai nuovi standard. Anche le query e le mutazioni specifiche dell’applicazione sono cambiate.
Registrazione di un utente
La registrazione di nuovi utenti ha seguito il protocollo nel tempo e si è adattata di conseguenza:
Parse 3.7.2:
In seguito, Parse 3.8 ha mantenuto la chiamata:
Parse 3.8:
Con l’arrivo di Parse 3.9, la proprietà objectId è cambiata in id per conformarsi:
Accesso a un utente
La registrazione di un utente è cambiata allo stesso modo:
Parse 3.7.2:
In seguito, Parse 3.8 ha mantenuto la chiamata:
Parse 3.8:
Con l’arrivo di Parse 3.9, la proprietà objectId è cambiata in id per conformarsi:
Ottenere un utente registrato
Anche il recupero delle informazioni su un utente registrato ha dovuto cambiare. È ancora necessario passare l’intestazione “X-Parse-Session-Token” insieme a un token di sessione valido per quell’utente, ma la query stessa è cambiata:
Parse 3.7.2:
Successivamente, Parse 3.8 ha modificato la query ME nel nuovo formato VIEWER:
Parse 3.8:
Con l’arrivo di Parse 3.9, la proprietà objectId è cambiata in id per conformarsi. Se non è necessario, la sintassi è la stessa di 3.8:
Conclusione
Con l’evoluzione di Parse insieme ad altre piattaforme e formati nel corso del tempo, era naturale che Parse continuasse a cambiare per semplificare lo sviluppo e mantenere coerenza e interoperabilità.
Con la comparsa di nuovi standard, Parse ha dovuto applicare delle modifiche per non differire dai componenti principali con cui si integra.
Come utente appassionato di Parse, mi sarei aspettato qualche altro cambiamento nel tempo. Modifiche valide. Cambiamenti che abbiano senso e che permettano a tutti di raggiungere i propri obiettivi.
Noi di Back4app siamo orgogliosi di aver contribuito a questa evoluzione e consigliamo a tutti coloro che utilizzano GraphQL di aggiornare Parse alla versione 3.9 insieme alle query e alle mutazioni GraphQL. Potrete beneficiare di un linguaggio di interrogazione molto più coerente.
La versione 4.0 è in preparazione. Cosa porterà?
Quali cambiamenti sono stati apportati a GraphQL nel corso del tempo?
Le principali modifiche apportate sono state:
– Integrazione del codice cloud
– Utilizzo semplificato
– Intuitività
– Nuova tecnologia utilizzata
– Sintassi coerente
Queste sono alcune delle modifiche apportate nel tempo.
Qual era la necessità di apportare modifiche alla Mutazione della creazione degli oggetti?
La coerenza è stata l’obiettivo principale per apportare modifiche. Ora, è necessario creare prima la classe in Parse 3.9 e poi creare gli oggetti. Pertanto, in questo aggiornamento si è ricercata la coerenza.
È stato positivo apportare cambiamenti sotto molti aspetti?
Sì, era necessario apportare modifiche. Stavano emergendo nuovi standard e chi usa Parse nutre grandi aspettative. Desiderano vedere il cambiamento come un miglioramento e Parse ha fatto lo stesso. Continuerà ad aggiornarsi per essere una buona versione anche in futuro.