apollo-datasource-graphql
Connect your GraphQL server to an existing GraphQL API using DataSources.
Note: This is designed to work with Apollo Server 2.0 and Data Sources
GraphQL Data Source
Install
yarn add apollo-datasource-graphql
or
npm i apollo-datasource-graphql --save
Usage
Define a data source by extending the GraphQLDataSource
class. You can then implement the queries and mutations that your resolvers require.
;; const CRAFT_BEERS = gql` query { craftBeers { name style abv brewery { name } } }`; baseURL = 'https//craft-beer-api.example/graphql'; async { try const response = await this; return responsedatacraftBeers; catch error console; }
GraphQL Operations
The query
and mutation
methods on the GraphQLDataSource
make a request to the GraphQL server. Both accepts a second parameter, options
, which can be used to pass variables, context, etc.
async { try const response = await this; return responsedatacraftBeer; catch error console; }
Parameter | Description | Required |
---|---|---|
graphQLDocument | A GraphQL document | true |
options | An object that defines options to pass with the GraphQL request | false |
Options | Description | Required |
---|---|---|
variables | A GraphQL document | false |
operationName | A string name of the query if it is named, otherwise it is null | false |
context | Metadata to be passed between Apollo Links | false |
extensions | A map to store extensions data to be sent to the server | false |
Intercepting Operations
You can intercept the request to set headers on an outgoing request. Since Apollo Data Sources have access to GraphQL context, you can store a user token or other information you need to have available when making a request.
Add the method willSendRequest
to your class which will receive the request
object. Here, you can modify the request to meet your needs.
{ const accessToken = thiscontext; if !requestheaders requestheaders = {}; requestheadersauthorization = accessToken; }
TODO
- Complete README
- Mutation method
- Test Suite
- Request caching