Git Product home page Git Product logo

graphql-federation's Introduction

GraphQL Federation

This reposotory represents my learning abount GraphQL Federation with Apollo.

Books API ./server-one

typeDefs definitions

extend schema
  @link(
    url: "https://specs.apollo.dev/federation/v2.0"
    import: ["@key", "@external"]
  )

type Book @key(fields: "authorId") {
  title: String
  authorId: Int
  author: Author
}

extend type Author @key(fields: "id") {
  id: ID! @external
}

type Query {
  books: [Book]
}

Resolvers

Query: {
  books: () => books,
},
Book: {
  author: (book) => {
    return { __typename: "Author", id: book.authorId };
  },
}

Author API ./server-two

typeDefs definitions

extend schema
extend schema @link(url: "https://specs.apollo.dev/federation/v2.0", import: ["@key"])

type Author @key(fields: "id") {
  id: ID!
  name: String
}

type Query {
  authors: [Author]
}

Resolvers

Query: {
  authors: () => authors,
},
Author: {
  __resolveReference(object) {
    return authors.find((user) => user.id == object.id);
  },
},

API Gateway ./gateway

Calls

Author query

query AuthorQuery {
  authors {
    id
    name
  }
}

Author with Book list query

query AuthorWithListOfBook {
authors {
  id
  name
  books {
    nodes {
      id
      title
    }
  }
}

Books query

query BooksQuery {
  books {
    title
    authorId
  }
}

Books with author query

query BooksWithAuthorQuery {
  books {
    title
    authorId
    author {
      id
      name
    }
  }
}

Comands

  • Start all services and API's
yarn start
  • Start ONLY Books API
yarn start:one
  • Start ONLY Author API
yarn start:two

graphql-federation's People

Contributors

jdgabriel avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.