GraphQL
2. Apollo
프잘백
2022. 10. 3. 02:09
728x90
GraphQL은 명세, 형식이다.
따라서, 백엔드에서 데이터를 반환하고 프론트엔드에서 요청을 전송하는 등의 GraphQL을 구현할 솔루션이 필요하다.
여기서 다양한 언어를 지원하는 GraphQL 솔루션을 확인할 수 있다.
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는 typeDefs와 resolvers를 인자로 받아 서버를 생성한다.
- typeDef는 GraphQL 명세에서 사용될 데이터이며 요청의 타입을 지정한다. (template literal tag로 생성됨)
- resolver는 서비스의 액션들을 함수로 지정한다. 요청에 따라 데이터를 반환, 입력, 수정, 삭제한다.