Schema-first vs Code-first
1. 서론
- Nest는 GraphQL 애플리케이션을 빌드 하는데 코드 우선(Code-first) 및 스키마 우선(Schema-first)방법을 제공한다.
2. Schema-first vs Code-first
- Code-first는 코드 우선 접근 방식에서는 데코레이터와 TypeScript 클래스를 사용하여 해당 GraphQL 스키마를 생성합니다. 이 방법은 TypeScript로만 작업하고 언어 구문 간의 컨텍스트 전환을 피하려는 경우 유용하다.
- 스키마 우선 접근 방식에서 진실된 소스는 GraqhQL SDL(Schema Definision Language) 파일입니다.
모든 프로그래밍 언어와 독립적이며, 통합되는 언어이고,NestJS
에서는 GraphQL 스키마를TypeScript
의 클래스 및 인터페이스 형식으로 구현된다..
GraphQL 스키마를 기반으로 TypeScript 정의 (클래스 또는 인터페이스 사용)를 자동으로 생성하여 중복된 상용구 코드를 작성할 필요성을 줄여줍니다.- Schema를 먼저 정의하고, 그에 맞게 코드를 작성하기 때문에 Schema-first라고 한다.
3. 장점과 단점
3-1) Schema-first
- 장점 :
1. ASynchoronous(비동기)한 개발 가능
- 확실한 의사소통의 수단
- SDL을 제외한 documents가 필요 없음
- 빠른 mocking으로 인해 개발 속도가 빨라짐
- 단점 :
1. SDL과 Resolver간의 일치성을 보장할 수 없음
- run time에서만 알 수 있는 단점
- schema가 늘어갈 수록 실수의 가능성이 높아짐.
- 다양한 도구들로 문제를 해결하려 하지만 근본적인 해결책이 되지 않는다.
3-2) Code-first
- 장점 :
1. scheam와 resolver간의 type safety를 보장
- 자신이 편한 언어로 개발 가능
- 코드 중복의 최소화
4. 단어 정의
- Rest가 Endpoint집합이라면, GraphQl은 타입 집합이다. 이 데이터 타입 집합은 Schema라고 한다.
- SDL은 스키마를 정의하는 언어이다.
5. SDL에 대한 설명
- GraphQL은 아래에서 설명하는 SDL을 사용하여 스키마를 작성한다. 이 스키마는 클라이언트와 서버 사이에서 어떻게 클라이언트가 데이터에 접근할 수 있는지를 알려주게 된다. 한번 스키마가 정의되면 추가적인 커뮤니케이션 없이 클라이언트, 서버는 어떤 식으로 데이터 구조가 정의되어 있는지 알 수 있다는 장점이 있다.
GraphQL은 API의 스키마를 정의할 때 사용하는 타입시스템을 가지고 있다. 스키마를 작성하는 문법을 SDL이라고 한다. SDL에서 ! 은 필수 값을 나타내는 기호로 사용된다. 아래와 같은 스키마가 있다면, !가 있는 name, age, title은 필수 값이 된다.- query, mutation, subscription도 SDL의 일부이다.
type Person {
name: String!
age: Int!
}
type Post {
title: String!
}
Author And Source
이 문제에 관하여(Schema-first vs Code-first), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@ko1586/Schema-first-vs-Code-first저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)