概念、想法、策略
概念、想法、策略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"
}