[nodejs] GraphQL 스키마 정의
GraphQL은 API를 정의하기 위한 강력한 쿼리 언어이자 런타임입니다. 이 문서에서는 Node.js와 함께 GraphQL 스키마를 정의하는 방법을 살펴보겠습니다.
스키마 정의하기
GraphQL 스키마는 API에서 제공되는 타입과 해당 타입 간의 관계를 정의합니다. 이를 통해 클라이언트는 서버에 요청할 수 있는 올바른 쿼리 및 뮤테이션을 알 수 있습니다.
GraphQL 스키마는 타입 정의와 루트 쿼리 및 뮤테이션 정의로 구성됩니다.
타입 정의
타입은 API에서 지원하는 데이터 구조를 정의합니다. 예를 들어, 사용자, 포스트, 댓글과 같은 타입을 정의할 수 있습니다. 각 타입은 핵심 필드와 서브 타입으로 구성될 수 있습니다.
예시 사용자 타입 정의:
const { gql } = require('apollo-server');
const typeDefs = gql`
type User {
id: ID!
name: String!
email: String!
posts: [Post!]!
}
`;
루트 쿼리 및 뮤테이션 정의
루트 쿼리와 뮤테이션은 클라이언트가 요청할 수 있는 진입점을 정의합니다. 루트 쿼리는 데이터를 읽을 때 사용되고, 뮤테이션은 데이터를 변경할 때 사용됩니다.
예시 루트 쿼리 및 뮤테이션 정의:
const { gql } = require('apollo-server');
const typeDefs = gql`
type Query {
users: [User!]!
user(id: ID!): User
}
type Mutation {
createUser(name: String!, email: String!): User!
updateUser(id: ID!, name: String, email: String): User!
}
`;
결론
GraphQL 스키마를 정의함으로써 API의 요청과 응답 형식을 명확히 정의할 수 있습니다. Node.js와 함께 GraphQL을 사용하면 강력하고 유연한 API를 만들 수 있습니다.
이상으로 GraphQL 스키마 정의에 대한 내용을 마치도록 하겠습니다.
이 문서는 Apollo Server 및 GraphQL Tools를 기반으로 작성되었습니다.
GraphQL Official Documentation