GraphQL と Apollo サーバー
7105 ワード
1) เริ่มต้นการทำงานของ Apollo Server ด้วย Koa
app.ts
2) กำหนด スキーマเริ่มต้น
schema.ts
3) กำหนด クエリ
4) กำหนด スキーマ
app.ts
/*
import Koa from 'koa'
import Router from 'koa-router'
*/
// จาก lib `apollo-server-koa`
import { ApolloServer } from 'apollo-server-koa'
// ไฟล์นี้สร้างในข้อสอง
import graphqlSchema from './graphqlSchema'
/*
async function createApp(): Promise<Koa> {
const application = new Koa()
const router = new Router()
*/
const graphqlServer = new ApolloServer({
introspection: true,
schema: graphqlSchema,
context: ({ ctx }) => ctx
})
await graphqlServer.start()
router.post("/graphql", graphqlServer.getMiddleware())
router.get("/graphql", graphqlServer.getMiddleware())
/*
application.use(router.routes())
return application
}
*/
2) กำหนด スキーマเริ่มต้น
schema.ts
import { GraphQLObjectType, GraphQLSchema } from 'graphql'
import GetUser from '.......'
export default new GraphQLSchema({
query: new GraphQLObjectType({
name: 'Query',
fields: {
// สามารถเพิ่มประเภทของการ Query ได้เรื่อย ๆ
GetUser,
.
..
...
}
}),
})
3) กำหนด クエリ
GetUser
import User from '.......'
export default {
type: User,
resolve: async () => ({
id: "test_id",
name: "test_name"
}),
}
4) กำหนด スキーマ
User
import { GraphQLObjectType, GraphQLID, GraphQLString } from "graphql"
export const User = new GraphQLObjectType({
name: 'User',
fields: () => ({
id: {
type: GraphQLID,
},
name: {
type: GraphQLString,
resolve: async args => {
// args จะเป็น resolve ของ query สามารถเอาไปใช้งานต่อได้
console.log(args) // { id: 'test_id', name: 'test_name' }
return 'finish'
}
}
}),
})
Reference
この問題について(GraphQL と Apollo サーバー), 我々は、より多くの情報をここで見つけました https://dev.to/mossnana/graphql-apollo-server-49khテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol