HomeAbout

Schema

What is it

Schema is a contract/promise between the server and client when exchanging data.

Schema defines a collection of types and the relationships among themeselves.

  • Unified schema in GraphQL allows clients to see exactly what data is available and then request a specific subset of the data with a single optimized query.
type Starship { id: ID! name: String! # length takes argument of unit w/ default valueof METER length(unit: LengthUnit = METER): Float }

Root Types (Entry Points)

There are two types that are special within a schema:

schema { query: Query mutation: Mutation }

Every GraphQL service always have a query type.

  • may or may not have a mutation type.

These types are the same as a regular object type, but they are special because they define the entry point of every GraphQL queries and mutations.

Type Definitions

typeDefs is synonymous with schema.

  • contains the schema definitions written as SDL (Schema Definition Language).

typeDefs can be an array of strings.

  • Each string is a GraphQL schema definition.

Apollo Server will merge all the typeDefs together when starting the server.

Template Literal

You can define schema/typeDefs with a template literal with graphql-tag.

Apollo server also provides gql from @apollo/server.

const gql = require("graphql-tag"); const typeDefs = gql` # Schema definitions go here `; module.exports = typeDefs;
AboutContact