일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- 정적팩토리메서드
- kotlin ::
- 그래프큐엘
- 도커 이미지 빌드
- 수정자주입
- fetch join
- 자바 필터
- 스프링부트 도커
- kotlin 리팩터링
- 동적파라미터
- java predicate
- 스프링di
- 기능적 요구사항
- Atomicity
- IOC
- open-session-in-view
- 스프링
- jpa lazy
- 토비의 스프링
- 스프링시큐리티
- 스프링 포매터
- method refetence
- 스프링 시큐리티 설정
- spring formatter
- 비기능적 요구사항
- 생성자주입
- 소프트웨어의 품격
- ioc컨테이너
- Spring
- jpa no session
Archives
- Today
- Total
공부기록
[GraphQL] GraphQL 개요 본문
반응형
GraphQL 개요
GraphQL ?
GraphQL은 클라이언트와 서버 간의 통신명세(스펙)이다
API를 만들 때 사용할 수 있는 쿼리 언어.
실제로 필요한 데이터만 받도록 작성할 수 있다.
GraphQL 설계 원칙
위계적
- 필드 안에 다른 필드가 중첩될 수 있으며, 쿼리와 그에 대한 반환 데이터는 형태가 서로 같다.
제품 중심적
- GraphQL은 클라이언트가 요구하는 데이터와 클라이언트가 지원하는 언어 및 런타임에 맞춰 동작한다.
엄격한 타입 제한
- GraphQL 서버는 GraphQL 타입 시스템을 사용한다. 스키마의 데이터 포인트마다 특정 타입이 명시되며 이를 기초로 유효성 검사를 한다.
클라이언트 맞춤 쿼리
- GraphQL 서버는 클라이언트 쪽에서 받아서 사용할 수 있는 데이터를 제공한다.
인트로스펙티브
- GraphQL 언어를 사용해, GraphQL 서버가 사용하는 타입 시스템에 대한 쿼리를 작성할 수 있다.
REST와의 관계
- 페이스북 개발팀은 REST의 단점을 해결할 새로운 데이터 전송 방식을 만들었다 그것이 바로 GraphQL.
REST의 단점.
오버페칭
응답이 매우 크다. 앱에서 필요한 데이터보다 훨씬 더 많은 데이터를 받아온다. 앱에서는 이름과 나이만 필요한데, 쓸데없는 동호회 정보까지 가져온다
언더페칭
동호회 사이트가 있다고 가정하자. 유저 'GraceLove"가 가입한 동호회 정보들을 가져오고 싶으면 먼저 유저에 대한 정보를 요청 -> 응답값 중 '동호회' 배열에 담긴 각각의 라우트에서 데이터를 가져온다.
"이름" : "GraceLove", "나이" : 29, "동호회" : [ "https://localhost:8080/api/society/1/", "https://localhost:8080/api/society/2/", ... ]
REST엔드포인트 관리
REST API는 유연성이 부족하다. 클라이언트에 변경 사항이 생기면 보통 엔드포인트를 새로 만들어야한다.
하지만 GraphQL의 엔드포인트는 보통 하나로 끝나게 된다. 단일 엔드포인트가 게이트웨이로써의 역할을 한다.
반응형
'GraphQL' 카테고리의 다른 글
[GraphQL] 가지고 놀아보기 #1 (0) | 2019.12.14 |
---|