Docs / Hive Integrations / Schema-Stitching Schema-Stitching Installation
npm yarn pnpm bun
yarn add @graphql-hive/core pnpm add @graphql-hive/core bun add @graphql-hive/core
We recommend installing Hive Client package as a direct dependency of your
project, because it includes a runtime to send usage reports and schemas to
Hive registry.
The @graphql-hive/core package exports a utility function called createServicesFetcher that can
be used to fetch services definition from Hive’s CDN. You can use it to create a GraphQL schema from
the all services schemas published to Hive.
The createServicesFetcher function is a part of the @graphql-hive/core
package, and it can be used with any GraphQL server runtime. You may use it
with Apollo Server, GraphQL Yoga, or any other library to implement a custom
GraphQL gateway.
Fetching Services Info from CDN
Once you have all services schemas pushed to Hive, and available in the CDN, you can
create a CDN Access Token and gain access to the CDN endpoint .
In this example, we are using GraphQL-Yoga to create the Gateway server.
import { createServer } from "node:http" ;
import { buildSchema } from "graphql" ;
import { createYoga } from "graphql-yoga" ;
import { createCDNArtifactFetcher } from "@graphql-hive/core" ;
import { buildHTTPExecutor } from "@graphql-tools/executor-http" ;
import { stitchSchemas } from "@graphql-tools/stitch" ;
const fetcher = createCDNArtifactFetcher ({
endpoint: [
"https://cdn.graphql-hive.com/artifacts/v1/<target_id>/services" ,
"https://cdn-mirror.graphql-hive.com/artifacts/v1/<target_id>/services" ,
],
accessKey: "<cdn_access_key>" ,
});
async function main () {
const services = JSON . parse ( await fetcher. fetch ());
const subschemas = services. map (( service ) => {
return {
schema: buildSchema (service.sdl),
executor: buildHTTPExecutor ({ endpoint: service.url }),
};
});
const schema = stitchSchemas ({ subschemas });
const yoga = createYoga ({ schema });
const server = createServer (yoga);
server. listen ( 4000 , () => {
console. info ( "Gateway is running on http://localhost:4000/graphql" );
});
}
main (). catch (( err ) => {
console. error (err);
process. exit ( 1 );
});
Usage Reporting
Based on the server runtime you chose, you can enable the usage reporting activate the Hive plugin
for the server you are running.
Additional Resources
← Lighthouse (Laravel) Gateway from v1 to v2 →