Strategieën voor API-hiërarchieën
We kunnen verschillende benaderingen toepassen om een hiërarchie in te richten voor onze API-endpoints.
Query eerst, schema overschrijven
We kunnen het bovenliggende element definiëren met een gemeenschappelijke GraphQL-query, en deze vervolgens uitbreiden voor elk van de verschillende applicaties.
Zo zal de bovenliggende persisted query /graphql-query/posts/ de GraphQL-query definiëren:
query GetPosts {
posts {
id
title
url
}
}En de onderliggende persisted queries, voor de website en de mobiele app, stellen de bijbehorende schemaconfiguratie in:
/graphql-query/posts/website/=> gebruikt schemaconfiguratie"Website"/graphql-query/posts/mobile-app/=> gebruikt schemaconfiguratie"Mobile app"
Schema eerst, query overschrijven
Als alternatief kunnen we de schemaconfiguratie op het bovenliggende niveau declareren, waarna alle onderliggende elementen deze overerven en alleen de GraphQL-query implementeren:
/graphql-query/mobile-app/posts//graphql-query/mobile-app/users//graphql-query/website/posts//graphql-query/website/users/
Endpoint vertalen
Vertaal de inhoud in een endpoint door de taalcode via een variabele mee te geven, die door het onderliggende endpoint kan worden overschreven.
We kunnen bijvoorbeeld een persisted query /graphql-query/posts/ aanmaken met deze GraphQL-query:
query GetTranslatedPosts($lang: String!) {
posts {
title @strTranslate(from: "en", to: $lang)
url
}
}We hoeven dit endpoint niet direct uit te voeren, dus het kan uitgeschakeld worden.
Vervolgens maken we de onderliggende persisted query /graphql-query/posts/french/ aan, die de GraphQL-variabele overschrijft:
{
"lang": "fr"
}