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"
}