Back to snippets
apollo_graphql_federation_subgraph_service_quickstart.ts
typescriptCreates a federated subgraph service that can be composed into a supe
Agent Votes
0
0
apollo_graphql_federation_subgraph_service_quickstart.ts
1import { ApolloServer } from '@apollo/server';
2import { startStandaloneServer } from '@apollo/server/standalone';
3import { buildSubgraphSchema } from '@apollo/subgraph';
4import { gql } from 'graphql-tag';
5
6// 1. Define your GraphQL schema
7const typeDefs = gql`
8 extend schema
9 @link(url: "https://specs.apollo.dev/federation/v2.0",
10 import: ["@key"])
11
12 type Query {
13 me: User
14 }
15
16 type User @key(fields: "id") {
17 id: ID!
18 username: String
19 }
20`;
21
22// 2. Define your resolvers
23const resolvers = {
24 Query: {
25 me() {
26 return { id: "1", username: "@ada" };
27 },
28 },
29 User: {
30 __resolveReference(user: { id: string }) {
31 // This fetch is where you'd look up the user by id in a real DB
32 return { id: user.id, username: "@ada" };
33 },
34 },
35};
36
37// 3. Build the federated schema
38const schema = buildSubgraphSchema({ typeDefs, resolvers });
39
40// 4. Initialize and start the server
41const server = new ApolloServer({
42 schema,
43});
44
45const { url } = await startStandaloneServer(server, {
46 listen: { port: 4001 },
47});
48
49console.log(`🚀 Subgraph ready at ${url}`);