[typescript] GraphQL-js에서의 타입 기반 HTTP 요청 및 응답 처리 방법

GraphQL은 API를 위한 쿼리 언어 및 런타임 시스템을 제공하는데, JavaScript로 구현된 graphql-js 라이브러리를 통해 타입 기반 HTTP 요청 및 응답 처리를 단순하게 할 수 있습니다. GraphQL-js가 제공하는 도구들을 이용하여 HTTP 요청과 응답의 타입을 선언하고 처리할 수 있습니다.

GraphQL-js와 함께하는 HTTP 요청 처리

GraphQL-js를 사용하여 HTTP 요청을 처리하려면 먼저 expresskoa와 같은 웹 프레임워크를 설정해야 합니다. 그런 다음 HTTP POST 요청을 받아들이고, 요청 본문을 분석하여 GraphQL 쿼리를 실행합니다.

아래는 express를 이용한 기본적인 예제코드입니다.

import express from 'express';
import { graphqlHTTP } from 'express-graphql';
import { GraphQLSchema, GraphQLObjectType, GraphQLString } from 'graphql';

const schema = new GraphQLSchema({
  query: new GraphQLObjectType({
    name: 'HelloWorld',
    fields: {
      message: {
        type: GraphQLString,
        resolve: () => 'Hello, World'
      }
    }
  })
});

const app = express();
app.use('/graphql', graphqlHTTP({
  schema: schema,
  graphiql: true
}));
app.listen(4000, () => {
  console.log('GraphQL server is running on http://localhost:4000/graphql');
});

위의 예제코드에서 /graphql 엔드포인트로 POST 요청을 보내면 GraphQL-js가 요청을 처리하고 응답을 반환합니다.

HTTP 응답 처리

GraphQL-js를 사용하여 HTTP 응답을 처리하는 것은 일반적으로 HTTP 상태 코드 및 콘텐츠 타입을 설정하고, GraphQL 쿼리 결과를 반환하는 것으로 이루어집니다.

아래는 응답 처리를 위한 Express 미들웨어 코드의 예제입니다.

app.use('/graphql', (req, res) => {
  graphqlHTTP({
    schema,
    graphiql: true
  })(req, res);
});

위 코드에서 graphqlHTTP 함수가 HTTP 응답을 생성하고 반환하여 클라이언트에게 전송합니다.

GraphQL-js를 사용하여 타입 기반의 HTTP 요청 및 응답을 처리하는 것은 간단하며, 위의 예시들을 참고하여 구현할 수 있습니다.

참고 자료