GraphQL은 API를 위한 쿼리 언어이며, 데이터를 요청하고 전달하는 데 사용되는 런타임입니다. Facebook에 의해 개발되었으며, 2015년에 공개적으로 출시되었습니다.
GraphQL과 REST API의 주요 차이점
- 클라이언트 중심의 쿼리: GraphQL을 사용하면 클라이언트가 필요한 데이터의 구조를 정의할 수 있습니다. 클라이언트는 정확히 필요한 데이터만 요청하고, 서버는 그에 맞게 응답합니다. 이는 불필요한 데이터 전송을 줄이고 애플리케이션의 성능을 개선할 수 있습니다.
- 단일 엔드포인트: GraphQL은 단일 엔드포인트를 사용하여 모든 요청을 처리합니다. 이는 REST API에서 볼 수 있는 여러 URL 엔드포인트와 대조적입니다.
- 타입 시스템: GraphQL은 강력한 타입 시스템을 제공합니다. 개발자는 스키마를 정의하여 데이터 타입과 관계를 명확히 할 수 있으며, 이는 API를 더 안정적이고 예측 가능하게 만듭니다.
- 효율적인 데이터 처리: 클라이언트는 필요한 정보를 한 번의 요청으로 얻을 수 있으며, 이는 네트워크 사용을 최적화하고 복잡한 쿼리를 단순화합니다.
- 종단 간 요청 처리: GraphQL은 쿼리 해석, 데이터 검색, 결과 반환과 같은 전체 프로세스를 관리합니다.
이해를 위한 이미지가 필요하다.
이제 위에서 말한 차이점이 조금 이해가 된다. 그래서 기본적인 코드를 실행시켜봤다.
코드는 이렇다.
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 |