Schema stitching
GraphQLSchema について
executable/non-executavle
api
server で実行
local/remote
local
remote (introspection, link)
extend remote (delegate)
transform
merge
schema stitching
executable & executable
executable & non-executable
conflict
schema federation
ライブラリ
graphql modules
graphql binding
gramps
まだわからないこと
Apollo の namespace
schema federation
graphql-binding
概要
仕組み
GraphQLSchema
GraphQL.js をベースに考える。GraphQL スキーマは、GraphQLSchema クラスのインスタンスと捉えることができる。 code:js
const { makeExecutableSchema } = require('graphql-tools')
const { grpahql } = require('grpahql')
const typeDefs = `
type Query {
item(id: ID!): Item
}
type Item {
id: ID!
name: String
description: String
}`
const resolvers = {
Query: {
item: (root, args, context, info) => {
return ...
}
},
}
// ここで、GraphQLSchema インスタンスが作られる
// SDL 内のフィールドとリゾルバ定義をマッピングする
const schema = makeExecutableSchema({
typeDef,
resolvers
})
// クエリの実行
const query = `
query {
item(id: "1") {
name
description
}
}`
graphql(schema, query)
.then(result => console.log(result))
リモートスキーマ
makeRemoteExecutableSchema を利用すると、外部の GraphQL API エンドポイントから GraphQLSchema インスタンスを作成できる。これは、スキーマ定義と GraphQL API エンドポイントの2つを引数にとる。