Ответ
Да, работал. В 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 с частыми изменениями требований к данным.