Search
moon
sun
✅

Query Type

REST API은 URL의 집합입니다.
/users/:id<br/> /features/:id
Plain Text
복사
같은 맥락에서, GraphQL API는 Type의 집합이라고 생각하면 됩니다. 타입을 알려주지 않으면, 오류가 생길 겁니다. GraphQL에서의 query는, REST API의 Get Request를 만드는 것과 같다는 것을 명심해주세요
🥕
GraphQL server에게 서버에 있는 데이터들의 타입을 미리 설명해줘야합니다.

Scalar Type(기본 제공 타입)

GraphQL에 내장된 타입
•
String
•
Int
•
Float
•
Boolean
•
ID
◦
id값을 명시적으로 표시하기 위해 사용
◦
내부적으로는 String과 동일합니다

Schema(스키마)

관계형 데이터 베이스의 스키마를 떠올리면 됩니다. 마찬가지로, 데이터의 shape을 알려줘야합니다.
🥕
어쩌면 불편하다고 생각할 수 있지만, 안정성 면에서 나쁘지 않으며, 덕분에 어떤 데이터들이 들어오는지 auto-complete를 통해 편하게 알 수도 있기도 합니다.
// 스키마 사용방식은 다음과 같습니다. // ``(백틱 : 오직 백틱만 쓰셔야 합니다)사이에 모든 내용이 들어가게 됩니다. 이는 SDL(Schema Definition Language)라고 부릅니다. const typeDefs = gql`<이 곳>`
JavaScript
복사

SDL 등록이 의미하는바

const typeDefs = gql` type Query { text: String hello: String } `;
JavaScript
복사
윗 내용은 REST API에서 GET url을 생성한 것과 같은 의미를 갖습니다. 사용자가 요청할 수 있도록 하고 싶은 모든 것은 type Query안에 작성되어야합니다.
🥕
기억하세요. Query라는 타입 안에 명시되어야 GET method를 수행하는 것과 같은 역할을 합니다
GET /text GET /hello
Markdown
복사
윗 역할과 같은 것을 수행한다고 보시면 됩니다.

Arguments

경로를 세분화하다보면, REST API의 /tweets/:id처럼 사용자의 id에 따라 달라지는 요청들이 있습니다. 이는, 명시적으로 적어주는 게 아닌, 동적으로 들어와야하는 값인데, 미리 설정할 수 있는 값이 아니다보니, Arguments로 넘겨줘야합니다(마치, 함수의 인자처럼)
const typeDefs = gql` type User { id: ID username: String } type Tweet { id: ID text: String author: User } type Query { allTweets: [Tweet] // 여기 이 부분이 바로 Arguments에 해당합니다. tweet(id: ID): Tweet } `;
JavaScript
복사

어떤 식으로 사용하나요?

arguments부분은 tweet(id: ${여기 이부분})에 해당합니다
// 아래 쿼리는 이것과 같습니다 : GET /api/.../tweet/:id { allTweets { text } // 이렇게 id를 넣으면 :id 위치에 해당 숫자가 들어가는 셈이죠 tweet(id: "1") { author { id username } } }
JavaScript
복사