Skip to content

2022-07-16 Production Ready GraphQL #40

@56aiden90

Description

@56aiden90

2022-07-16

Implementing GraphQL Servers(84p) - Schema Metadata(95p)

Implementing GraphQL Servers

GraphQL Server Basics

  • 리졸버는 대개 3-4 개의 인자를 받으며, 예를 들어 아폴로서버는 parent, arguments, context 외에도 Info라는 AST를 넘겨준다.
  • context에는 authentication, cache 관련 정보 등이 담기고 context는 request 단위로 명확히 구분되어야 한다.

Code First vs Schema First

  • 커스텀 Scalar과 Directive를 잘 사용하자. 비즈니스 로직을 리졸버와 분리하고, GraphQL에서 지원하는 에러/데이터 시스템을 활용할 수 있게 된다.

Resolver Design

  • Todo list 프로젝트에서 ODM과 GraphQL 타입을 하나의 클래스에서 동시에 정의했는데, 경우에 따라 분리하는 것이 좋을 수도 있다. GraphQL은 결국 API이며 데이터 소스와는 구분되어야 하기 때문이다.
  • context는 매 request 마다 새롭게 생성된다. 아폴로서버의 ApolloServer 생성자에서도 context를 함수로 받고 있는데 이는 매 request마다 새로운 객체를 반환해야 하기 때문이다.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions