본문 바로가기

graphql6

graphql subscsription 어떻게 굴러가는지 알아보기 저희 서비스의 "미발행 송장 카운트"에 graphql subscription을 적용하면서, 전반적인 subscription이 어떻게 동작하는지 흐름을 정리한 글입니다. 저희 회사는 graphql server를 apollo server + nexus 조합을 사용하고 있습니다.  graphql spec문서에 보면 operation을 3개로 정의하고 있으며 주로 사용하는 query, mutation 이외에도 subscription가 존재합니다. subscription은 클라이언트와 서버 간에 장기적인 연결을 유지하며, 서버가 특정 이벤트나 데이터 변경을 감지할 때 클라이언트에 데이터를 푸시하는 방법입니다.  이 글에는 저희 회사 스펙인 apollo server와 nexus를 사용하여 구현해보도록 하겠습니다. .. 2025. 2. 16.
[Nexus] NexusGenObjects와 NexusGenFieldTypes의 차이 nexus는 graphql 서버를 code first하게 작성할 수 있게 도와주는 라이브러리 이다. nexus의 여러 장점중 하나는 생성된 graphql schema를 기반으로 typescript type을 제공해준다는 것이다. 덕분에 우리는 type safe하게 개발을 할 수 있다. nexus schema를 만들 때 다음과 같이 작성해주면 된다. const schema = makeSchema({ types: [ /* All schema types provided here */ ], outputs: { schema: path.join(__dirname, '../../my-schema.graphql'), typegen: path.join(__dirname, '../../my-generated-types... 2023. 3. 24.
[GraphQL] custom scalar type 사용하기 scalar라는 단어는 선형대수학에서 처음 나왔는데, 행렬과 벡터에서 하나의 수를 구분하기 위해 사용되었다고 합니다. 이 의미는 프로그래밍에서 사용하는 것과 유사한데, 자료구조에서 원소를 구분할 수 있는 single value를 scalar라고 합니다. [12, 6, true, "a", "b"] 배열에 있다면 각각의 원소값은 number(12,6), string(a, b), boolean(true)로 구분할 수 있으며 이때 number, string, boolean이 scalar 값을 의미합니다. scalar와 대조되는 개념은 compound이며 compound는 array, map, set, struct 처럼 여러 scalar 값을 포함하는 것을 의미합니다. 종종 scalar와 primitive를 헷갈.. 2022. 10. 9.
[GraphQL] null propagation GraphQL type field는 기본적으로 nullable이다. null값에 대해 허용하는 type languaged의 경우 대부분 기본적으로 non-null합니다. 변수를 선언하면 기본적으로 null을 허용하지 않으며 null값을 허용하는 경우 명시적으로 표시해줘야 합니다. - typescript type User = { name: string // non-null hobby?: string // nullable } - c# Nullable num; int? num; - kotlin var a : String? = null 이와는 반대로 GraphQL field는 기본적으로 nullable합니다. 때문에 반드시 값이 존재하는 경우 명시적으로 non-null을 의미하는 (!)를 표시해줘야 합니다. t.. 2022. 10. 1.