// 使用GraphQL Schema Definition Language(SDL)定義schema
const typeDefs = gql`
type Query {
hello: String
}
`;
// 建立resolve
const resolvers = {
Query: {
hello: () => 'Hello world!',
},
};
// server運作使用
const server = new ApolloServer({ typeDefs, resolvers });
把定義好的typeDefs 與resolvers丟給server就可以跑了但是如果建立schema的程序希望可以不要手寫SDL
可能是透過程序自動產生 就無法做到
ApolloServer 除了吃typeDefs, resolvers 參數外
直接產生好schema
透過
const server = new ApolloServer({ schema }); 執行
也是可以的
以下範例是說明完全利用Graphql.js來建立schma物件
const graphql = require('graphql')
const queryType = new GraphQLObjectType({
name: 'Query', // 要建立的type名稱,整個graphql至少要有一個Query, 其他可以是自建類型名稱
fields: {
hello: { // 設定有一個hello的查詢
type: graphql.GraphQLString, // 類型為基本scarla類型,可透過graphql取得
args: { // 若這查詢可以提供輸入參數
name: { //參數名稱
type: graphql.GraphQLString, //參數類型
},
age: {
type: graphql.GraphQLInt
}
},
resolve: (parent, args, context, info) => { // 執行資料處理,args會拿到
return `im....${args.name} age=${args.age}`
}
},
oz: {
name: 'oz',
type: graphql.GraphQLString
}
}
})
const schema = new GraphQLSchema({
query: queryType
})
const server = new ApolloServer({ schema })
這樣就可以完全用js去建立產生schema運作以上建立的查詢在client做以下查詢
{
firstName(name: "oz")
age
}
得到回應結果{
"data": {
"firstName": "[oz]",
"age": null
}
}
api參考https://graphql.org/graphql-js/type/#graphqlobjecttype
沒有留言:
張貼留言