오늘은 Apollo Server 구축하기까지 했다!
ApolloServer: typeDef와 resolver를 인자로 받아 서버 생성
typeDef: GraphQL 틀에서 사용될 데이터, 요청의 타입 지정
요청에 따라 데이터를 반환, 입력, 수정, 삭제
>>index.js
const database = require('./database')
const {ApolloServer, gql} = require('apollo-server)
const typeDefs = gql`
type Query {
teams: [Team]
}
type Team {
id: Int
manager: String
office: String
extension_number: String
mascot: String
cleaning_duty: String
project: String
}
`
const resolvers = {
Query: {
teams: () => database.teams
}
}
const server = new ApolloServer({typeDefs, resolvers})
server.listen().then(({url}) => {
console.log(`Server ready at ${url}`)
})
Query: 데이터 요청하는 역할
>>Type: 반환될 데이터 형태를 지정해준다.
type Query {
teams: [Teams]
}
>>Resolver: 데이터와 관련한 액션을 반환하는 함수
const resolvers = {
Query: {
teams: () => database.teams
}
}
>>쿼리 요청
query {
equipments {
id
used_by
count
new_or_used
}
}
Mutation: 데이터 CRUD 작업
>>추가 루트 타입
type Mutation {
insertEquipment(
id: String,
used_by: String,
count: Int,
new_or_used: String
): Equipment
}
>>추가 resolver
Mutation: {
insertEquipment: (parent, args, context, info) => {
database.equipment.push(args)
return args
},
}
>>추가 query
mutation {
insertEquipment (
id: "laptop",
used_by: "developer",
count: 17,
new_or_used: "new"
){
id
used_by
count
new_or_used
}
}
'GraphQL' 카테고리의 다른 글
22.03.28 useLazyQuery vs useQuery (0) | 2022.03.28 |
---|---|
22.01.05 [graphQL] GET supports only query operation (0) | 2022.01.05 |