오늘 뭐했냐/개발에 대한 주저리

GraphQL

스스로에게 2023. 10. 24. 18:56

GraphQL은 API를 위한 쿼리 언어이며, 데이터를 요청하고 전달하는 데 사용되는 런타임입니다. Facebook에 의해 개발되었으며, 2015년에 공개적으로 출시되었습니다.

 

GraphQL과 REST API의 주요 차이점

  1. 클라이언트 중심의 쿼리: GraphQL을 사용하면 클라이언트가 필요한 데이터의 구조를 정의할 수 있습니다. 클라이언트는 정확히 필요한 데이터만 요청하고, 서버는 그에 맞게 응답합니다. 이는 불필요한 데이터 전송을 줄이고 애플리케이션의 성능을 개선할 수 있습니다.
  2. 단일 엔드포인트: GraphQL은 단일 엔드포인트를 사용하여 모든 요청을 처리합니다. 이는 REST API에서 볼 수 있는 여러 URL 엔드포인트와 대조적입니다.
  3. 타입 시스템: GraphQL은 강력한 타입 시스템을 제공합니다. 개발자는 스키마를 정의하여 데이터 타입과 관계를 명확히 할 수 있으며, 이는 API를 더 안정적이고 예측 가능하게 만듭니다.
  4. 효율적인 데이터 처리: 클라이언트는 필요한 정보를 한 번의 요청으로 얻을 수 있으며, 이는 네트워크 사용을 최적화하고 복잡한 쿼리를 단순화합니다.
  5. 종단 간 요청 처리: GraphQL은 쿼리 해석, 데이터 검색, 결과 반환과 같은 전체 프로세스를 관리합니다.

 

이해를 위한 이미지가 필요하다.

출처: https://tech.kakao.com/2019/08/01/graphql-basic/

 

이제 위에서 말한 차이점이 조금 이해가 된다. 그래서 기본적인 코드를 실행시켜봤다.

 

코드는 이렇다.

const express = require('express');
const { graphqlHTTP } = require('express-graphql');
const { buildSchema } = require('graphql');

// GraphQL 스키마 정의
const schema = buildSchema(`
  type Query {
    hello: String
  }
`);

// 루트 제공자(root resolver) 정의
const root = {
    hello: () => {
        return 'Hello, world!';
    },
};

// Express 서버 생성 및 GraphQL 미들웨어 설정
const app = express();
app.use('/graphql', graphqlHTTP({
    schema: schema,
    rootValue: root,
    graphiql: true, // GUI를 제공하는 GraphiQL 툴 활성화
}));

// 서버 시작
app.listen(4000, () => {
    console.log('Running a GraphQL API server at http://localhost:4000/graphql');
});

 

 

서버를 실행하고 http://localhost:4000/graphql로 들어가니 

 

이렇게 화면이 나오고 쿼리를 실행할 수 있다. 그래서 쿼리를 추가하고 hello를 실행했다. 

 

'오늘 뭐했냐 > 개발에 대한 주저리' 카테고리의 다른 글

23.10.20 (JS에서의)this  (0) 2023.10.20
23.10.19 가비지 컬렉션  (0) 2023.10.19
23.10.18 CommonJS와 ES6  (0) 2023.10.18
23.10.14 프로토타입  (0) 2023.10.16
23.10.13 태스크 큐  (0) 2023.10.16