Concepts, idées, stratégies
Concepts, idées, stratégiesStratégies pour les hiérarchies d'API

Stratégies pour les hiérarchies d'API

Nous pouvons appliquer différentes idées pour configurer une hiérarchie pour nos endpoints d'API.

Requête d'abord, remplacer le schéma

Nous pouvons définir le parent pour qu'il contienne une requête GraphQL commune, puis l'étendre pour chacune des différentes applications.

Par exemple, la requête persistée parente /graphql-query/posts/ définira la requête GraphQL :

query GetPosts {
  posts {
    id
    title
    url
  }
}

Et les requêtes persistées enfants, pour le site web et l'application mobile, définiront la configuration de schéma correspondante :

  • /graphql-query/posts/website/ => utiliser la schema configuration "Website"
  • /graphql-query/posts/mobile-app/ => utiliser la schema configuration "Mobile app"

Schéma d'abord, remplacer la requête

Alternativement, nous pouvons déclarer la configuration du schéma au niveau parent, puis tous les enfants l'héritent, et implémentent uniquement la requête GraphQL :

  • /graphql-query/mobile-app/posts/
  • /graphql-query/mobile-app/users/
  • /graphql-query/website/posts/
  • /graphql-query/website/users/

Traduire l'endpoint

Traduire le contenu dans un endpoint en fournissant le code de langue via une variable, qui peut être remplacée par l'endpoint enfant.

Par exemple, nous pouvons créer une requête persistée /graphql-query/posts/ avec cette requête GraphQL :

query GetTranslatedPosts($lang: String!) {
  posts {
    title @strTranslate(from: "en", to: $lang)
    url
  }
}

Nous n'avons pas besoin d'exécuter cet endpoint directement, il peut donc être désactivé.

Ensuite, nous créons la requête persistée enfant /graphql-query/posts/french/, qui remplace la variable GraphQL :

{
  "lang": "fr"
}