Стратегии для иерархий API
Мы можем применять различные подходы к настройке иерархии конечных точек API.
Сначала запрос, переопределение схемы
Мы можем определить родительский элемент, содержащий общий GraphQL-запрос, а затем расширить его для каждого из различных приложений.
Например, родительский сохранённый запрос /graphql-query/posts/ определит GraphQL-запрос:
query GetPosts {
posts {
id
title
url
}
}А дочерние сохранённые запросы для веб-сайта и мобильного приложения задают соответствующую конфигурацию схемы:
/graphql-query/posts/website/=> использовать schema configuration"Website"/graphql-query/posts/mobile-app/=> использовать schema configuration"Mobile app"
Сначала схема, переопределение запроса
Альтернативно, мы можем объявить конфигурацию схемы на родительском уровне, после чего все дочерние элементы её наследуют, и реализовать только GraphQL-запрос:
/graphql-query/mobile-app/posts//graphql-query/mobile-app/users//graphql-query/website/posts//graphql-query/website/users/
Перевод endpoint
Переводим содержимое в endpoint, передавая код языка через переменную, которую дочерний endpoint может переопределить.
Например, мы можем создать сохранённый запрос /graphql-query/posts/ с таким GraphQL-запросом:
query GetTranslatedPosts($lang: String!) {
posts {
title @strTranslate(from: "en", to: $lang)
url
}
}Нам не нужно выполнять этот endpoint напрямую, поэтому его можно отключить.
Затем мы создаём дочерний сохранённый запрос /graphql-query/posts/french/, который переопределяет GraphQL-переменную:
{
"lang": "fr"
}