Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 프로세스
- 프론트엔드
- Machine Learning
- cors
- pytorch
- 포인터
- 알고리즘
- 타입스크립트
- 웹팩
- 큐
- 자료구조
- 릿코드
- 해시테이블
- GraphQL
- 연결리스트
- 배열
- RT scheduling
- 컨테이너
- RxJS
- APOLLO
- 코딩테스트
- 이진탐색
- C
- 브라우저
- alexnet
- vue3
- 자바스크립트
- 스택
- 프로그래머스
- 연결 리스트
Archives
- Today
- Total
프린세스 다이어리
[GraphQL] 4. apollo-server 설치, 기본 실행 코드 설명 본문
728x90
1. apollo-server 설치
npm i apollo-server
// index.js
const database = require('./database');
const { ApolloServer, gql } = require('apollo-server');
const typeDefs = gql`
type Query {
teams: [Team]
}
type Team {
id: Int
manager: String
office: String
extension_number: String
mascot: String
cleaning_duty: String
project: String
}
`;
const resolvers = {
Query: {
teams: () => database.teams,
},
};
const server = new ApolloServer({ typeDefs, resolvers });
server.listen().then(({ url }) => {
console.log(`🚀 Server ready at ${url}`);
});
2. 코드 설명
(1) apollo-server 생성
apollo-server 모듈에서 가져온 ApolloServer 클래스는 typeDefs, resolvers를 인자로 받아서 생성자로 서버를 생성한다.
const server = new ApolloServer({ typeDefs, resolvers });
(2) server 실행
생성한 서버를 .listen() 명령어로 실행을 해 준다.
server.listen().then(({ url }) => {
console.log(`🚀 Server ready at ${url}`);
});
(3) typeDefs와 resolvers 정의
typeDefs
const typeDefs = gql`
type Query {
teams: [Team]
}
type Team {
id: Int
manager: String
office: String
extension_number: String
mascot: String
cleaning_duty: String
project: String
}
`;
- GraphQL 명세에서 사용될 데이터, 요청의 타입 지정.
- gql(template literal tag)로 생성됨
예를 들어 Team이라는 데이터가 어떤 항목으로 구성되어 있는지, 그리고 이를 요청할 Query에도 어떤 식으로 요청이 들어가는지 등의 데이터 구조가 선언돼 있다고 보면 된다.
type Query {
teams: [Team]
}
더 자세히 보면 Query는 query의 루트 타입을 나타낸다. Query 라는 타입 안에 어떤 요청이 들어오고 그것으로 어떤 형식의 데이터들이 반환될지가 지정되어 있는 것이다. [Team]이라는 형태로 반환한다는 것은 Team이라는 타입이 배열의 형태로 여러개 반환된다는 의미다. team은 즉 Team의 형태로 구성된 데이터들의 묶음이다.
type Team {
id: Int
manager: String
office: String
extension_number: String
mascot: String
cleaning_duty: String
project: String
}
Team에는 각 항목들마다 정수, 문자열 등의 자료형이 지정되어 있다.
resolver
const resolvers = {
Query: {
teams: () => database.teams,
},
};
- 서비스의 액션들을 함수로 지정
- 요청에 따라 데이터를 반환, 입력, 수정, 삭제
Query에서 이루어지는 실질적인 작업들이 정의되어 있다. Query의 teams 항목은 화살표 함수 형식으로 데이터베이스의 teams 항목을 반환하는 함수임을 알 수 있다. 실제 프로젝트에서는 MySQL 조회 코드 등이 들어간다.
728x90
'GraphQL' 카테고리의 다른 글
[GraphQL] 6. Mutation 쿼리 짜는 기본 코드 설명 (0) | 2021.11.24 |
---|---|
[GraphQL] 5. Query 구현하는 기본 코드 설명 (0) | 2021.11.23 |
[GraphQL] 3. Apollo가 무엇이고 왜 쓰는지 (0) | 2021.11.21 |
[GraphQL] 2. GraphQL 형식으로 정보 주고받는 방법 정리 (0) | 2021.11.21 |
[GraphQL] 1. RestAPI의 특징과 한계, GraphQL이 등장한 배경 (0) | 2021.11.20 |
Comments