SQL
GQL
{
cust{
CUST_NO
}
}
REST
Representational State TransFer
자원의 이름을 구분하여 해당 자원의 상태를 주고 받는 것
HTTP URL을 통해 자원을 명시,
HTTP Method(post, get, put, delete)를 통하여 자원에 대한 CRUD Operation을 적용하는 것을 말한다.
장점
단점
쿼리
{
cust{
name
}
}
응답 데이터
"data" : {
"cust" : {
"name" : "sg-moomin"
}
}
느낌표를 이용하면 필수 값을 표현한다.
ex) async (parent, args, context, info) => {
}
GQL을 호출해올 경우 쿼리의 속도는 천차 만별인데 이 때 필드를 한번 이상 반복해야 하는 경우가 생긴다.
이 때 Fragments를 이용하여 재사용 가능한 단위를 묶으주면 된다.
{
"data": {
"leftHome": {
"name": "퇴사",
"appearsIn": [
"집",
"야근",
"sgMoomin"
],
"friends": [
{
"name": "가나 초콜릿"
},
{
"name": "초콜릿 존맛탱"
},
{
"name": "쉬림프 파스타"
},
{
"name": "떡볶이 존맛탱구"
}
]
},
"rightHome": {
"name": "취직",
"appearsIn": [
"회사",
"정시출근",
"rominPic"
],
"friends": [
{
"name": "코딩업무"
},
{
"name": "데이터 보정"
},
{
"name": "할렐루야"
}
]
}
}
}
위의 필드를 보면 내용이 반복되는 것을 볼 수 있는데 아래와 같이 함축할 수 있다.
{
leftHome: hero(episode: sgMoomin) {
...comparisonFields
}
rightHome: hero(episode: rominPic) {
...comparisonFields
}
}
fragment comparisonFields on Character {
name
appearsIn
friends {
name
}
즉 프래그먼트의 개념은 복잡한 애플리케이션 데이터 요구사항을 더 작게 분할하기 위해 자주 사용합니다.