title: '@urql/exchange-execute' order: 6#
Execute Exchange#
Note: These API docs are deprecated as we now keep TSDocs in all published packages. You can view TSDocs while using these packages in your editor, as long as it supports the TypeScript Language Server. We're planning to replace these API docs with a separate web app soon.
The @urql/exchange-execute package contains an addon executeExchange for urql that may be used to
execute queries against a local schema. It is therefore a drop-in replacement for the default
fetchExchange and useful for the server-side, debugging, or testing.
Installation and Setup#
First install @urql/exchange-execute alongside urql:
yarn add @urql/exchange-execute
# or
npm install --save @urql/exchange-execute
You'll then need to add the executeExchange, exposed by this package, to your Client.
It'll typically replace the fetchExchange or similar exchanges and must be used last if possible,
since it'll handle operations and return results.
import { createClient, cacheExchange } from 'urql';
import { executeExchange } from '@urql/exchange-execute';
const client = createClient({
url: 'http://localhost:3000/graphql',
exchanges: [
cacheExchange,
executeExchange({
/* config */
}),
],
});
The executeExchange accepts an object of options, which are all similar to the arguments that
graphql/execution/execute accepts. Typically you'd pass it the schema option, some resolvers
if your schema isn't already executable as fieldResolver / typeResolver / rootValue,
and a context value or function.
Options#
| Option | Description |
|---|---|
schema |
This is of type GraphQLSchema and accepts either a schema that is or isn't executable. This field is required while all other fields are optional. |
rootValue |
The root value that graphql's execute will use when starting to execute the schema. |
fieldResolver |
A given field resolver function. Creating an executable schema may be easier than providing this, but this resolver will be passed on to execute as expected. |
typeResolver |
A given type resolver function. Creating an executable schema may be easier than providing this, but this resolver will be passed on to execute as expected. |
context |
This may either be a function that receives an Operation and returns the context value, or just a plain context value. Similarly to a GraphQL server this is useful as all resolvers will have access to your context |