반응형
간단한 예제 등을 통해서 빠르게 graphQl 를 체험해보고 이해하는것에 목표를 둔다.
GraphQL 소개
- Graph Query Language
- Facebook 개발 GraphQL blog
- RESTful API 로는 다양한 기종에서 필요한 정보들을 일일히 구현하는 것이 힘들었다.
- 예로, iOS 와 Android 에서 필요한 정보들이 조금씩 달랐고, 그 다른 부분마다 API 를 구현하는 것이 힘들었다.
- 이 때문에 정보를 사용하는 측에서 원하는 대로 정보를 가져올 수 있고,보다 편하게 정보를 수정할 수 있도록 하는 표준화된 Query language 를 만들게 되었다. 이것이 GraphQL 이다.
트렌드
The State of JavaScript 2019: GraphQL
2019년부터 사용량이 급증하고 있다고 보여진다.
그럼에도 아직 기존 방식이 많이 사용 되고 있으니 미리 Graph Ql 를 학습해 놓는 것도 좋은 방법이다.
효용성
- 정확히 필요한 데이터만 fetching 할 수 있다.
- 여러개의 쿼리를 단 하나의 request 로 처리 할 수 있다.
- 관계형 데이터 베이스를 지원한다. (entitiy 간의 relation을 지원 한다.)
타입
- Client 와 Server 간의 규약이다.
- Server side 타입 시스템의 에러를 좀 더 의미있게 할수 있다.
- 추가 적인 안전 장치가 된다.
단일 endpoint
- restful 의 경우 return 하는 데이터 형태에 따라 endpoint 가 정해져 있기 때문에 데이터 형태가 변경 되면 endpoint 도 추가 된다.
- Versionless Api
Any DB
REST vs GraphQL
Blog API 예제
- post
- author
- comment
REST
-
/post/{id}
{ id : "post01", title : "블로그 제목 입니다.", content : "블로그 내용 입니다.", user : "user01" }
-
/comment/{id}
{ id : "comment01", post : "post01", userName : "악플러다", comment : "노잼", }
-
/user/{id}
{ id : "user02", userName : "글쓴이", email : "test@xxx" }
-
/posts
{ lists : [ "post01", "post02", "post03" ] }
이 api 를 가지고 일반적인 최신 블로그의 글 목록페이지를 만든다고 가정해보면 먼저 포스트 리스트의 id를 알기 위해
GET /posts
를 호출
{
lists : [
"post01",
"post02",
"post03"
]
}
이 api 에서는 작성자나 포스트의 제목이 없기 때문에 response 의 포스트 id 리스트를 가지고
GET /post/{id}
를 호출 합니다.
{
id : "post01",
title : "블로그 제목 입니다.",
content : "블로그 내용 입니다.",
user : "user01"
}
{
id : "post02",
title : "블로그 제목 입니다.",
content : "블로그 내용 입니다.",
user : "user01"
}
{
id : "post03",
title : "블로그 제목 입니다.",
content : "블로그 내용 입니다.",
user : "user01"
}
이제 포스트 목록을 보여줄 수 있을 것 같지만 userName 정보가 없어서 글쓴이를 보여줄 수가 없습니다.
그래서 다시 한번 포스트의 user id 정보를 가지고
GET /user/{id}
를 호출 합니다.
{
id : "user01",
userName : "글쓴이1",
email : "test@xxx"
}
{
id : "user02",
userName : "글쓴이2",
email : "test@xxx"
}
이제서야 블로그 포스트 최신 목록을 보여줄수 있습니다.
실제 현업에서는
GET /recentsposts
{
posts : [
{
id : "post01",
title : "블로그 제목 입니다.",
content : "블로그 내용 입니다.",
userName : "user01"
},
{
id : "post01",
title : "블로그 제목 입니다.",
content : "블로그 내용 입니다.",
userName : "user01"
}
}
주로 형태의 api 를 추가로 만들어서 사용하게 됩니다.
여기에 추가로 포스트에 달린 댓글을 카운트도 표현해주고 싶다면?
또 API 의 end point 가 추가 되거나 모델이 수정되어야 합니다.
REST API 는 수많은 request 와 end point를 야기 시켜서 유지보수를 어렵게 만듭니다.
GraphQL
단 하나의 request 로 해결 할수 있습니다.
Request
query{
posts {
title,
content,
user{
userName
}
}
}
Response
{
posts : [
{
title : "최신 포스팅 이외다",
content : "...",
user : {
userName : "글쓴이01"
}
}
]
}
반응형
'개발관련 > 자바스크립트 팁' 카테고리의 다른 글
VS CODE TIP (0) | 2021.01.19 |
---|---|
실무에서 값을 할당 할때 많이 사용하는 자바스크립트 연산자 (0) | 2021.01.18 |
[JavaScript] String Code 관련 (0) | 2020.08.26 |
자바스크립트 정렬 팁 (0) | 2020.08.21 |
문자열 정렬 팁 (0) | 2020.08.20 |