GraphQL이란?

Yeeun_Kim·2024년 2월 18일
0
post-thumbnail

1. GraphQL이란?

  • Facebook에서 개발된 오픈소스 기술로 API를 위한 쿼리 언어이다.
  • 클라이언트에게 필요한 것을 정확하게 요청할 수 있는 기능을 제공한다.
  • 클라이언트가 요청한 필드만 반환되기 때문에 Over Feching을 줄일 수 있다.

REST API와 차이점

REST API는 클라이언트에서 데이터를 가져올 때, API의 URI를 통해 해당 데이터를 가져오는데, 이 때 필요한 데이터만큼 URI를 조합하여 가져와야 한다. 하지만 GraphQL은 서버 측에서 정의된 스키마(schema)를 기반으로 클라이언트에서 원하는 데이터를 쿼리하여 가져올 수 있습니다.

2. 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으로 선언된 경우 요청 시 사용하는 field들을 정의한 것이다.
  • input으로 선언될 경우 argument를 정의한 것이다.

3. Query & Mutation

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

5개의 댓글

comment-user-thumbnail
2024년 2월 19일

GraphQL로 진행되는 프로젝트가 많이 보이던데..한 번 사용해보고 싶어지네요!

답글 달기
comment-user-thumbnail
2024년 2월 20일

면접 대비로 외운기억이 있네요. 리마인드 하였습니다!

답글 달기
comment-user-thumbnail
2024년 2월 20일

요즘 핫한 GraphQL에 대한 내용 잘 보았습니다! 감사합니다!

답글 달기
comment-user-thumbnail
2024년 2월 20일

좋은 기능을 소개해주셔서 감사합니다. 나중에 실습 한번 해보고 싶네요~

답글 달기
comment-user-thumbnail
2024년 2월 20일

몰랐던 GraphQL에 대해서 배우게 되는 좋은 시간이었습니다.

답글 달기