Schema-First는 graphql의 스키마를 먼저 정의하고 스키마의 정의에 맞게 코드를 작성하는 방법이다. 스키마를 작성하기 위해서는 graphql의 데이터 모델을 나타내기 위해 만들어진 SDL을 사용하기 때문에 Schema-First라고 불린다.
참고) 스키마란? 데이터 타입의 집합이라고 할 수 있다.
참고) SDL이란? Schema Definision Language의 약자로 스키마를 정의하는 언어라고 할 수 있다.
type Dog {
name: String!
age: Int!
}
위의 코드를 보면 Dog 타입을 표현하는 SDL이며, name 필드는 String 타입을 가지고 age 필드는 Int 타입을 가진다. 그리고 !는 필수를 의미한다.
데코레이터와 타입스크립트 클래스를 사용하여 먼저 작성한 Resolver를 기반으로 해당 graphql의 스키마를 자동 생성한다.
코드 우선의 예시
@Entity()
@ObjectType()
export class User {
@PrimaryGeneratedColumn('uuid')
id: string;
@Column()
@Field(()=> String)
email: string;
@Column()
@Field(()=> String)
password: string;
}
참고한 사이트:
https://velog.io/@zoeyul/Graphql-code-first-vs-schema-first
https://timewizhan.tistory.com/entry/GraphQL-SDL-Schema-Definition-Language
https://blog.graphqleditor.com/graphql-schemafirst-codefirst
https://velog.io/@kim_truee/Schema-first-vs-Code-first