Работал ли с GraphQL

«Работал ли с GraphQL» — вопрос из категории Сети, который задают на 23% собеседований Golang Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Да, работал. В Go для работы с GraphQL часто используют библиотеку graphql-go/graphql или 99designs/gqlgen.

Пример с gqlgen (генерация кода из схемы):

// schema.graphql
type Query {
  hello: String!
}

// После генерации:
type Resolver struct{}
func (r *Resolver) Query() QueryResolver {
  return &queryResolver{r}
}
type queryResolver struct{ *Resolver }
func (r *queryResolver) Hello(ctx context.Context) (string, error) {
  return "world", nil
}

Плюсы GraphQL в Go:

  • Типобезопасность через кодогенерацию (gqlgen).
  • Гибкость запросов (клиент выбирает поля).
  • Интеграция с существующими REST-сервисами.

Минусы:

  • Сложнее в настройке, чем REST.
  • N+1 проблема без даталоадеров.

Использовал для API с частыми изменениями требований к данным.