REST API와 차이점
REST API는 클라이언트에서 데이터를 가져올 때, API의 URI를 통해 해당 데이터를 가져오는데, 이 때 필요한 데이터만큼 URI를 조합하여 가져와야 한다. 하지만 GraphQL은 서버 측에서 정의된 스키마(schema)를 기반으로 클라이언트에서 원하는 데이터를 쿼리하여 가져올 수 있습니다.
Type
- Int: 부호가 있는 32비트 정수
- Float: 부호있는 부동 소수점 값
- String: UTF-8 문자열
- Boolean: true 또는 false
- ID: 고유 식별자
type User {
uid: ID!, //!를 붙일 경우 non-null field
name: String!,
age: Int,
phone: String
}
#user input 선언
input UserInput {
name: String!
age: Int
phone: String
}
type Query {
getUsers: [User]
findUser(uid: Int): Member
}
type Mutation {
createUser(input: UserInput!): User!
updateUser(input: UserInput!): User!
deleteUser(uid: String): String!
}
GraphQL에서는 Query는 read일 경우 사용하고, 그 외의 경우에는 Mutation을 사용한다.
query {
user {
name
age
}
}
해당 쿼리를 서버에 보낼 경우 "user"객체의 "name과 "age"필드를 반환합니다. 필요한 필드만을 요청할 수 있기 때문에 불필요한 데이터를 받을 필요가 없어 overfetching을 방지할 수 있다.
참고
https://devocean.sk.com/blog/techBoardDetail.do?ID=164787
https://devport.tistory.com/3
GraphQL로 진행되는 프로젝트가 많이 보이던데..한 번 사용해보고 싶어지네요!