Skip to main content

Plugin to compose your Tartiflette Graphql service in an Apollo federation

Project description

See https://github.com/remorses/tartiflette-apollo-federation-example for an example

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: 
            CONFIG: |
                [
                    {
                        "name": "1",
                        "url": "http://service1:8001/graphql"
                    },
                    {
                        "name": "2",
                        "url": "http://service2:8002/graphql"
                    }
                ]

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.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page