概念、想法、策略API 层级结构策略
API 层级结构策略
我们可以应用不同的思路来为 API 端点建立层级结构。
Query 优先,覆盖 Schema
我们可以在父级定义通用的 GraphQL Query,然后针对各个不同的应用对其进行扩展。
例如,父级持久化 Query /graphql-query/posts/ 将定义如下 GraphQL Query:
query GetPosts {
posts {
id
title
url
}
}而针对网站和移动端应用的子持久化 Query,将分别指定对应的 Schema 配置:
/graphql-query/posts/website/=> 使用 Schema 配置"Website"/graphql-query/posts/mobile-app/=> 使用 Schema 配置"Mobile app"
Schema 优先,覆盖 Query
或者,我们也可以在父级声明 Schema 配置,让所有子级继承该配置,而仅各自实现 GraphQL Query:
/graphql-query/mobile-app/posts//graphql-query/mobile-app/users//graphql-query/website/posts//graphql-query/website/users/
翻译端点
通过变量传入语言代码来翻译端点中的内容,子端点可以覆盖该变量的值。
例如,我们可以创建一个持久化 Query /graphql-query/posts/,使用如下 GraphQL Query:
query GetTranslatedPosts($lang: String!) {
posts {
title @strTranslate(from: "en", to: $lang)
url
}
}我们不需要直接执行该端点,因此可以将其禁用。
然后,创建子持久化 Query /graphql-query/posts/french/,覆盖 GraphQL 变量:
{
"lang": "fr"
}