Graphql_Apollo

์–„ํŒํ•œ graphql & apollo ๊ฐ•์ขŒ - Apollo ์„œ๋ฒ„ ๊ตฌ์ถ•

eddie0329 2021. 6. 28. 22:11
๋ฐ˜์‘ํ˜•

๐Ÿ“Œ ๋ชฉ์ฐจ

  • ์„œ๋ก 
  • ์„ค์น˜
  • ๊ฐ„๋‹จํ•œ ๊ตฌํ˜„
  • graphql playground
  • ๊ฒฐ๋ก 
  • ์ฐธ๊ณ 

๐Ÿ“Œ ์„œ๋ก 

์–„์ฝ”๋‹˜์˜ ๊ฐ•์˜๋ฅผ ์ •๋ฆฌํ•œ ๋‚ด์šฉ๋“ค ์ž…๋‹ˆ๋‹ค. ํ•ด๋‹น ๊ฐ•์˜๋Š” apollo server์™€ react๋ฅผ ์—ฐ๊ฒฐํ•˜๋Š” ๋ถ€๋ถ„์„ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿผ ๋จผ์ € apollo-server๋ฅผ ์„ค์น˜ํ•ด๋ณผ๊นŒ์š”?

๐Ÿ“Œ ์„ค์น˜

๋จผ์ € graphlql๊ณผ apollo-server๋ฅผ ์„ค์น˜ํ•ด๋ณผ๊นŒ์š”?

npm install graphql apollo-server

๐Ÿ“Œ ๊ฐ„๋‹จํ•œ ๊ตฌํ˜„

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,
  }
`;

// resolvers๋Š” ์‹ค์ œ๋กœ query ํ˜น์€ mutations๊ฐ€ ์–ด๋–ค ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•˜๋Š”์ง€ ์ ์–ด์ค๋‹ˆ๋‹ค.
const resolvers = {
  Query: {
    teams: () => database.teams
  }
};

// Initialization
const server = new ApolloServer({ typeDefs, resolvers });

// ์‹ค์ œ๋กœ ์„œ๋ฒ„๊ฐ€ ์‹คํ–‰๋˜๋Š” ๋ถ€๋ถ„
server.listen().then(({ url }) => {
  console.log(`Server is ready at ${url}`);
});

๐Ÿ“Œ graphql playground

์ด์ œ localhost:4000์œผ๋กœ ๋“ค์–ด๊ฐ€์„œ ์‹ค์ œ๋กœ ํ•œ๋ฒˆ ์ฟผ๋ฆฌ๋ฅผ ๋‚ ๋ ค๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

query {
  teams {
    id
    manager
    office
    extension_number
    mascot
    cleaning_duty
    project
  }
}

์—ฌ๊ธฐ์„œ ๋ˆˆ์น˜๋ฅผ ์ฑ„์…จ๊ฒ ์ง€๋งŒ teams์•ˆ์— ์žˆ๋Š” ๊ฒƒ๋“ค๋งŒ ๋‚ด๋ ค์˜ค๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๊ฐ€๋ น ๋งŒ์•ฝ์— id๋งŒ ์–ป๊ณ  ์‹ถ๋‹ค๋ฉด

query {
  teams {
    id
  }
}

์ด๋ ‡๊ฒŒ ๋ณด๋‚ด์ฃผ๋ฉด ๋˜๊ฒ ์ฃ ?

๐Ÿ“Œ ๊ฒฐ๋ก 

graphql์€ rest-api๋ฅผ ์ •๋ง ๋Œ€์ฒดํ•  ์ˆ˜ ์žˆ์„๊นŒ? ๊ทธ๋ฆฌ๊ณ  ๋Œ€์ฒดํ•œ๋‹ค๋ฉด ์–ด๋–ค ์  ๋•Œ๋ฌธ์— ๋Œ€์ฒด๊ฐ€ ๊ฐ€๋Šฅํ• ์ง€ ํ•œ๋ฒˆ ์•ž์œผ๋กœ ์•Œ์•„๋ณด๋Š” ์‹œ๊ฐ„์„ ๊ฐ€์ ธ ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ ์™„์„ฑ๋œ ๋ถ€๋ถ„์„ ๋ณด๋ฉฐ ์‹ค์ œ rest-api๋Š” ์–ด๋–ป๊ฒŒ ํ–ˆ์–ด์•ผ ํ–ˆ๋Š”์ง€ ๊ฐ„๋‹จํ•˜๊ฒŒ ๋น„๊ต๋„ ํ•ด๋ณด๋Š” ์‹œ๊ฐ„์ด ์žˆ์„๊ฑฐ ๊ฐ™์•„์š”. ๊ทธ๋Ÿผ ๋‹ค์Œ ๊ฐ•์˜๋„ ๋ด์ฃผ์„ธ์š”! ์•ˆ๋…• ~

๐Ÿ“Œ ์ฐธ๊ณ 

๋ฐ˜์‘ํ˜•