Konzepte, Ideen, Strategien
Konzepte, Ideen, StrategienStrategien für API-Hierarchien

Strategien für API-Hierarchien

Wir können verschiedene Ideen anwenden, um eine Hierarchie für unsere API-Endpoints einzurichten.

Query zuerst, Schema überschreiben

Wir können das übergeordnete Element so definieren, dass es eine gemeinsame GraphQL-Query enthält, und diese dann für jede der verschiedenen Anwendungen erweitern.

Zum Beispiel definiert die übergeordnete Persisted Query /graphql-query/posts/ die GraphQL-Query:

query GetPosts {
  posts {
    id
    title
    url
  }
}

Und die untergeordneten Persisted Queries, für die Website und die mobile App, legen die entsprechende Schema-Konfiguration fest:

  • /graphql-query/posts/website/ => verwendet die Schema-Konfiguration "Website"
  • /graphql-query/posts/mobile-app/ => verwendet die Schema-Konfiguration "Mobile app"

Schema zuerst, Query überschreiben

Alternativ können wir die Schema-Konfiguration auf der übergeordneten Ebene deklarieren, und alle untergeordneten Elemente erben sie und implementieren nur die GraphQL-Query:

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

Endpoint übersetzen

Übersetze den Inhalt in einem Endpoint, indem du den Sprachcode über eine Variable übergibst, die vom untergeordneten Endpoint überschrieben werden kann.

Zum Beispiel können wir eine Persisted Query /graphql-query/posts/ mit dieser GraphQL-Query erstellen:

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

Wir müssen diesen Endpoint nicht direkt ausführen, er kann also deaktiviert werden.

Dann erstellen wir die untergeordnete Persisted Query /graphql-query/posts/french/, die die GraphQL-Variable überschreibt:

{
  "lang": "fr"
}