GraphQL

21.10.20 query, mutation

슈팅스타제제 2021. 10. 20. 23:37

오늘은 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