Product
Introducing License Enforcement in Socket
Ensure open-source compliance with Socket’s License Enforcement Beta. Set up your License Policy and secure your software!
appolo-graphql-datasource
Advanced tools
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
npm i apollo-graphql-datasource --save
Define a data source by creating new the GraphQLDataSource
instance. The below example will create a GraphQL datasource to the Apollo Federation Demo gateway. In the real world project, your schema may conflict with the destination schema. Therefore, a prefix should be added to the destination schema types, in this example: Demo0
const GraphQLDataSource = require('appolo-graphql-datasource');
const { gql } = require('apollo-server');
const typeDefs = `
type Demo0Product {
upc: String!
name: String
price: Int
weight: Int
reviews: [Demo0Review]
inStock: Boolean
shippingEstimate: Int
calulatedField(inputArgs: SomeInput): Int
calulatedField2(inputArgs: SomeInput!): CalulatedField2Response
}
type Demo0Review {
id: ID!
body: String
author: Demo0User
product: Demo0Product
}
type Demo0User {
id: ID!
name: String
username: String
reviews: [Demo0Review]
}
enum ProductEnum {
VALUE_1
VALUE_2
}
input SomeInput {
args1: Int
args2: String!
}
type CalulatedField2Response {
value1: Int
value2: Int
value3: String
}
type Query {
Demo0me: Demo0User
Demo0topProducts(first: Int = 5, status: ProductEnum): [Demo0Product]
}
type Mutation {
Demo0doSth(first: Int = 5): [Demo0Product]
}
`;
const dataSource = new GraphQLDataSource(
'http://federation.gateway.url/',
typeDefs,
'Demo0',
);
module.exports = () => ({
demoFederationAPI: dataSource,
});
query
and mutation
methods on the GraphQLDataSource
make a request to the GraphQL server. The datasource will foward the client's query to the destination server.query
and mutation
methods accepts a second parameter, options
, which can be used to pass the additional headers.queries
or mutations
in one requestfunction genericQuery(parent, args, context, info) {
const { demoFederationAPI } = context.dataSources;
const { secretToken } = context;
const headers = {
serviceSecret: secretToken,
};
return demoFederationAPI.query(info, { headers });
}
module.exports = {
Query: {
Demo0topProducts: (...params) => genericQuery(...params),
// ...others queries
}
}
If you want to transform some types to scalar, provide them in constructor
const dataSource = new GraphQLDataSource(
'http://federation.gateway.url/',
typeDefs,
'Demo0',
['calulatedField2'], // provide Types to transform
);
FAQs
GraphQL Datasource for Apollo Server
The npm package appolo-graphql-datasource receives a total of 5 weekly downloads. As such, appolo-graphql-datasource popularity was classified as not popular.
We found that appolo-graphql-datasource demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Product
Ensure open-source compliance with Socket’s License Enforcement Beta. Set up your License Policy and secure your software!
Product
We're launching a new set of license analysis and compliance features for analyzing, managing, and complying with licenses across a range of supported languages and ecosystems.
Product
We're excited to introduce Socket Optimize, a powerful CLI command to secure open source dependencies with tested, optimized package overrides.