[Back-end] GraphQL

Geun·2022년 4월 30일
0

Back-end

목록 보기
71/74

GraphQL

GraphQL은 API서버에서 엄격하게 정의된 endpoint들에 요청하는 대신 한 번의 요청으로 정확히 가져오고 싶은 데이터를 가져올 수 있게 쿼리를 보낼 수 있다.
GraphQL은 Backend에서의 많은 로직을 Frontend로 분산할 수 있다.

REST와 GraphQL의 차이

REST API는 URL, Method 등을 조합하기 때문에 다양한 Endpoint가 존재한다.
반면, gql(GraphQL)은 하나의 Endpoint가 존재한다.
또 gql API에서는 불러오는 데이터의 종류를 쿼리 조합을 통해서 결정한다.
REST API에서는 각 Endpoint마다 데이터 베이스 SQL 쿼리가 달라지는 반면 gql API는 gql 스키마의 타입마다 데이터베이스 SQL 쿼리가 달라진다.

GraphQL의 구조

쿼리/뮤테이션(query/mutation)

스키마/타입(schema/type)

오브젝트 타입과 필드

type Character {
  name: String!
  appearsIn: [Episode!]!
}

resolver

type Query {
  users: [User]
  user(id: ID): User
  limits: [Limit]
  limit(UserId: ID): Limit
  paymentsByUser(userId: ID): [Payment]
}

type User {
	id: ID!
	name: String!
	sex: SEX!
	birthDay: String!
	phoneNumber: String!
}

type Limit {
	id: ID!
	UserId: ID
	max: Int!
	amount: Int
	user: User
}

type Payment {
	id: ID!
	limit: Limit!
	user: User!
	pg: PaymentGateway!
	productName: String!
	amount: Int!
	ref: String
	createdAt: String!
	updatedAt: String!
}

참고자료

https://hwasurr.io/api/rest-graphql-differences/
https://tech.kakao.com/2019/08/01/graphql-basic/
https://d2.naver.com/helloworld/4245995

0개의 댓글