The Guild LogoThe Guild Monogram
GraphQL Mesh

GraphQL Mesh

Query anything, run anywhere.

Contact Us

GraphQL#

image

This handler allows you to load remote GraphQL schemas and use them with schema-stitching based on graphql-tools.

To get started, install the handler library:

yarn add @graphql-mesh/graphql

Now, you can use it directly in your Mesh config file:

sources: - name: MyGraphQLApi handler: graphql: endpoint: http://my-service-url:3000/graphql

You can check out our example that uses schema stitching with a PostgreSQL data source. Click here to open the example on GitHub

 


 

Dynamic Header Values (e.g., for Authorization)#

Mesh can take dynamic values from the GraphQL Context or the environmental variables. For example, if you use mesh dev or mesh start, GraphQL Context will be the incoming HTTP request.

The expression inside dynamic values should be as in JS.

 

From Context (HTTP Header for mesh dev or mesh start)#

sources: - name: MyGraphQLApi handler: graphql: endpoint: http://my-service-url:3000/graphql operationHeaders: # Please do not use capital letters while getting the headers Authorization: Bearer {context.headers['x-my-api-token']} # You can also access to the cookies like below; # Authorization: Bearer {context.cookies.myApiToken}

And for mesh dev or mesh start, you can pass the value using x-my-graphql-api-token HTTP header.

 

From Environmental Variable#

MY_API_TOKEN is the name of the environmental variable you have the value.

sources: - name: MyGraphQLApi handler: graphql: endpoint: http://my-service-url:3000/graphql operationHeaders: Authorization: Bearer {env.MY_API_TOKEN}

 


 

Config API Reference#

  • endpoint (type: String, required) - A url or file path to your remote GraphQL endpoint. If you provide a path to a code file(js or ts), other options will be ignored and the schema exported from the file will be used directly.

  • schemaHeaders (type: Any) - JSON object representing the Headers to add to the runtime of the API calls only for schema introspection

  • operationHeaders (type: JSON) - JSON object representing the Headers to add to the runtime of the API calls only for operation during runtime

  • useGETForQueries (type: Boolean) - Use HTTP GET for Query operations

  • method (type: String (GET | POST)) - HTTP method used for GraphQL operations

  • customFetch (type: Any) - Path to a custom W3 Compatible Fetch Implementation

  • webSocketImpl (type: String) - Path to a custom W3 Compatible WebSocket Implementation

  • introspection (type: String) - Path to the introspection You can seperately give schema introspection

  • multipart (type: Boolean) - Enable multipart/formdata in order to support file uploads

  • subscriptionsProtocol (type: String (SSE | WS | LEGACY_WS)) - SSE - Server Sent Events WS - New graphql-ws LEGACY_WS - Legacy subscriptions-transport-ws

  • retry (type: Int) - Retry attempts if fails

  • timeout (type: Int) - Timeout in milliseconds

  • batch (type: Boolean) - Enable/Disable automatic query batching or

  • schema (type: Any, required) - A file path to your GraphQL Schema If you provide a path to a code file(js or ts), other options will be ignored and the schema exported from the file will be used directly.