Skip to content

Latest commit

 

History

History
69 lines (60 loc) · 2.36 KB

File metadata and controls

69 lines (60 loc) · 2.36 KB
description
GraphQL Mesh allows you to create a unified GraphQL schema from multiple sources, using handlers and transforms. Configure sources, handlers, and transforms in a .mesh.yaml file to build your first gateway.

Overview

Working with Mesh means dealing with 4 main concepts: Sources, Handlers, Transforms and Unified Schema:

  1. In Mesh, a sub-service (GraphQL API, REST API) is called a Source.
  2. Sources are translated to GraphQL Schemas with the appropriate Handler.
  3. All Sources' GraphQL Schema are merged into a final Unified Schema.
  4. Finally, if applicable, configured transformations, called Transforms, are applied to the Unified Schema.
graph LR;
subgraph A [GraphQL Mesh server]
A0[Unified Schema]
subgraph A1 [Configured sources]
subgraph A11 [City Source]
A111[City Source GraphQL Schema]
end
subgraph A12 [Population Source]
A121[Population GraphQL Schema]
end
subgraph A31 [Weather Source]
A311[Weather GraphQL Schema]
end
end
end
A111 & A121 & A311-- merged in --> A0
subgraph B [Services]
subgraph B1 [City REST API]
B11[Swagger definition file]
end
subgraph B2 [Population GraphQL API]
B21[GraphQL Schema]
end
subgraph B3 [Weather REST API]
B31[RAML definition file]
end
end
B11--translated to GraphQL Schemas by handler-->A111
B21--translated to GraphQL Schemas by handler-->A121
B31--translated to GraphQL Schemas by handler-->A311
Loading

The above GraphQL Mesh Gateway has 3 configured Sources:

  1. The "City" Source configured with the @graphql-mesh/openapi Handler.
  2. The "Population" Source configured with the @graphql-mesh/graphql Handler.
  3. The "Weather" Source configured with the @graphql-mesh/raml Handler.

Sources, Handlers, Transforms are configured in a .mesh.yaml (or .json, .js, .ts) configuration file that defines:

  • How to fetch the definition of the sub-services (GraphQL API, REST API, and more)
  • What transformations should be applied to the unified schema (optional)
  • The path to the declaration of custom resolvers (optional)
  • Which cache strategy should be used? (optional)
  • Which envelop plugins should be loaded and configured at the server level? (optional)

Let's have a closer look to a .mesh.yaml configuration file by installing Mesh and building our first Gateway!