GraphQL
Apollo Angular
La solution la plus commune pour consommer des APIs GraphQL est le package Apollo Angular apollo-angular.
Configuration
Profitez des schematics d'apollo-angular !
yarn ng add apollo-angularA défaut de disposer d'un mécanisme de configuration dynamique de votre application Angular, mettez en place l'URI de votre API GraphQL via les environnements Angular (fichiers environments/environment*.ts)
Plugin IntelliJ / WebStorm
Le plugin GraphQL d'IntelliJ / WebStorm facilite la consommation d'APIs GraphQL grâce à la découverte automatique du schéma puis l'autocomplétion.
https://plugins.jetbrains.com/plugin/8097-js-graphql
Services Query / Mutate
Bien qu'il soit possible d'utiliser directement les méthodes query, mutate et watchQuery du service Apollo pour exécuter des queries et mutations, depuis n'importe quel endroit de votre application, il est préférable d'utiliser des services dédiés à chaque query ou mutation qui héritent respectivement des classes Query et Mutation.
@Injectable({
providedIn: 'root'
})
export class UserListQuery extends Query<{ users: User[] }> {
document = gql`query UserList {
users {
id
firstName
lastName
}
}`;
}Ce service peut ensuite être utilisé ainsi :
this._userListQuery.fetch()
.subscribe(({data}) => this.userList = data.users);Le service dispose également d'une méthode watch qui vous permet d'observer les changements en cas d'activation du polling (option pollInterval) ou encore en cas de mise à jour du cache local par exemple.
Dans tous les cas, n'oubliez pas d'unsubscribe de l'Observable retourné ou d'utiliser RxScavenger.
https://github.com/wishtack/wishtack-steroids/tree/master/packages/rx-scavenger
Factorisation des queries grâce au fragments
Pensez à utiliser les fragments pour factoriser vos queries.
https://www.apollographql.com/docs/angular/features/fragments.html
Last updated
Was this helpful?