Graphql 서버 만들기 및 babel 설정

|

Graphql 서버 만들기

babel 설정

※ Server쪽에서 require대신 import로 모듈을 불러오게끔 하는 코드 ※

  • npm i nodemon -D
  • npm i @babel/cli -D
  • npm i @babel/core -D
  • npm i @babel/node -D
  • npm i @babel/preset-env -D

  • package.json
    "scripts": {
      "start": "nodemon --exec babel-node index.js"
            }
    
  • 루드디렉토리에서 .babelrc 파일 생성후 작성
    {
      "presets": [
          [
                  "@babel/preset-env",
              {
                  "useBuiltIns": "entry",
                  "corejs": 3
              }
          ]
      ]
    }
    

기본적인 작성

new GraphQLServer({}) 안에 Schema를 작성해주거나 여러 기타등등을 넣어줄 수 있다.
Schema란?: 사용자에게 보내거나 사용자로부터 받을 data에 대한 설명을 뜻 한다.

  • index.js
import { GraphQLServer } from 'graphql-yoga';
import resolvers from './graphql/resolvers';

const server = new GraphQLServer({
  typeDefs: 'graphql/schema.graphql',
  resolvers: resolvers,
});

server.start(() => console.log('Graphql Server Running'));

  • graphql > resolvers.js , schema.graphql

  • resolvers.js

    • 쿼리 실행 ```javascript const resolvers = { Query: { name: () => ‘정중식’, }, };

export default resolvers;


- schema.graphql
  - 쿼리 타입 정의
  - 느낌표 ! 는 필수값이라고 생각하면 됨
```javascript
type Query {
  name: String!
}

이런식으로 작성도 가능하다.

Query의 person은 Jung 를 리턴한다.

  • schema.graphql
type Jung {
  name: String!
  age: Int!
  gender: String!
}

type Query {
  person: Jung!
}

  • resolvers.js
const jung = {
  name: 'jungsikjeong',
  age: 27,
  gender: 'female',
};

const resolvers = {
  Query: {
    person: () => jung,
  },
};

export default resolvers;