GraphQL

2. Apollo

프잘백 2022. 10. 3. 02:09
728x90

GraphQL은 명세, 형식이다.

따라서, 백엔드에서 데이터를 반환하고 프론트엔드에서 요청을 전송하는 등의 GraphQL을 구현할 솔루션이 필요하다.

여기서 다양한 언어를 지원하는 GraphQL 솔루션을 확인할 수 있다.

GraphQL solutions

 

GraphQL Code Libraries, Tools and Services

Typetta is an open-source ORM written in TypeScript that aims to allow seamless access to data in a typed fashion to all main SQL databases (MySQL, PostgreSQL, Microsoft SQL Server, SQLLite3, CockroachDB, MariaDB, Oracle & Amazon Redshift) and also to the

graphql.org

그 중 백엔드, 프론트엔드 둘 다 사용 가능하고 간편하면서 많은 기능을 제공하는 Apollo를 사용하려고 한다.

 

 

npm init
npm graphql apollo-server

npm init 후 GraphQL과 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}`)
})

DB입력은 생략 😢

 

ApolloServer는 typeDefsresolvers를 인자로 받아 서버를 생성한다.

  • typeDef는 GraphQL 명세에서 사용될 데이터이며 요청의 타입을 지정한다. (template literal tag로 생성됨)
  • resolver는 서비스의 액션들을 함수로 지정한다. 요청에 따라 데이터를 반환, 입력, 수정, 삭제한다.