Thistle is a GraphQL federation gateway which implements a subset of the Apollo Federation specification. It provides a simple and reliable way to combine multiple GraphQL APIs.
import "git.sr.ht/~adnano/thistle"
You'll need Go 1.16 or later.
The following features are supported:
@key
directives@requires
directives@external
directives@inaccessible
directivesThe following features are not supported:
@key
directives on the same object@key
or @requires
directives@inaccessible
directives at locations other than field definitions@extends
, @provides
, @link
, @shareable
, @tag
, @override
, @composeDirective
)See federation.graphql for the exact definitions used.
Bramble and Nautilus are two other Go implementations of a GraphQL gateway, but they do not support Apollo Federation. Thistle began as a fork of Bramble.
Apollo Gateway and Apollo Router are non-free implementations of Apollo Federation in TypeScript and Rust. They are licensed under the non-free Elastic license.
graphql-go-tools is a Go implementation of Apollo Federation, but it is poorly documented, overcomplicated, and tries to do too much.