README.md

# AbsintheCompose

Compose multiple GraphQL endpoints into a single unified graph.

## Getting Started

The simplest way to compose GraphQL endpoints is to act as a gateway where you forward requests for your different top-level queries to different backends.

```elixir
defmodule Schema do
  use Absinthe.Schema

  query do
    field :paddles, list_of(:paddle) do
      meta(
        compose: [
          from: Absinthe.Compose.HTTPClient,
          opts: [
            url: "http://localhost:9000/graphql"
          ]
        ]
      )
      resolve(&Absinthe.Compose.resolve/3)
    end
  end

  # object/field definitions go here
end
```

We add a little meta-data to the field so and tell Absinthe to have this library resolve it.
Then `absinthe_compose` will call `Absinthe.Compose.HTTPClient` with the opts we've provided, a GraphQL query of all the fields requested under the `paddles` root node and any variables we need to pass along.

For more examples, see `test/proxy_query_field_test.exs` and `test/proxy_mutation_field_test.exs`.