Skip to content

Plugin to compose your Tartiflette Graphql service in an Apollo federation

Notifications You must be signed in to change notification settings

remorses/tartiflette-plugin-apollo-federation

Repository files navigation

See https://github.com/remorses/tartiflette-apollo-federation-example for an example For now the plugin only supports simple sharing of types with the same fields and merging of the query and mutation fileds, In the near future there will be support for the @keydirective and a new @ResolveReference('TypeName') decorator to resolve the types between servers, similar to how Apollo __resolveReference works.

To suggest other better api ideas on how to implement __resolveReference open a issue.

Installation

pip install tartiflette_plugin_apollo_federation

Usage

from tartiflette_aiohttp import register_graphql_handlers
from tartiflette_plugin_apollo_federation import ApolloFederationPlugin

def run():
    engine_sdl = "./sdl/"
    app = register_graphql_handlers(
        app=web.Application(),
        engine_sdl=engine_sdl,
        engine_modules=[
            ApolloFederationPlugin(engine_sdl=engine_sdl)
        ],
        executor_http_endpoint="/graphql",
        graphiql_enabled=True,
    )
    web.run_app(app, port=PORT)

run()

Then use xmorse/apollo-federation-gateway to glue together your services

version: '3'
services:
    service1:
        build: ./service1
    service2:
        build: ./service2
    gateway:
        image: xmorse/apollo-federation-gateway
        ports:
            - 8000:80
        environment: 
            URL_0: "http://service1:8001/graphql"
            URL_1: "http://service2:8002/graphql"

About

Plugin to compose your Tartiflette Graphql service in an Apollo federation

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages