GraphQL 2

Core Concepts Tutorial

์Šค์นด๋งˆ ์ •์˜ ์–ธ์–ด (SDL)GraphQL์€ API์˜ ์Šคํ‚ค๋งˆ๋ฅผ ์ •์˜ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ์ž์ฒด ํƒ€์ž… ์‹œ์Šคํ…œ์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์Šคํ‚ค๋งˆ๋ฅผ ์ž‘์„ฑํ•˜๊ธฐ ์œ„ํ•œ ๊ตฌ๋ฌธ์„ Schema Definition Language(SDL)๋ผ๊ณ  ๋ถ€๋ฆ…๋‹ˆ๋‹ค. SDL์„ ์‚ฌ์šฉํ•˜์—ฌ Person์ด๋ผ๋Š” ๊ฐ„๋‹จํ•œ ํƒ€์ž…์„ ์ •์˜ํ•˜๋Š” ์˜ˆ์‹œ์ž…๋‹ˆ๋‹ค.์ด ํƒ€์ž…์€ ๋‘ ๊ฐœ์˜ ํ•„๋“œ๋ฅผ ๊ฐ€์ง‘๋‹ˆ๋‹ค. ํ•„๋“œ์˜ ์ด๋ฆ„์€ ๊ฐ๊ฐ name๊ณผ age์ด๋ฉฐ, ํƒ€์ž…์€ String๊ณผ Int์ž…๋‹ˆ๋‹ค. ํƒ€์ž… ๋’ค์— ๋ถ™๋Š” ! ํ‘œ์‹œ๋Š” ํ•ด๋‹น ํ•„๋“œ๊ฐ€ ํ•„์ˆ˜๋ผ๋Š” ์˜๋ฏธ์ž…๋‹ˆ๋‹ค.type Person { name: String! age: Int!} ํƒ€์ž… ๊ฐ„์˜ ๊ด€๊ณ„๋ฅผ ํ‘œํ˜„ํ•˜๋Š” ๊ฒƒ๋„ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ๋ธ”๋กœ๊ทธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์˜ˆ์‹œ์—์„œ Person์€ Post์™€ ์—ฐ๊ฒฐ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.type Post { title: String! a..

GraphQL 2025.07.29

REST์˜ ๋ฌธ์ œ์ ์„ ํ•ด๊ฒฐํ•œ GraphQL

GraphQL์€ API๋ฅผ ์œ„ํ•œ ์ฟผ๋ฆฌ ์–ธ์–ด์ž…๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ •ํ™•ํ•˜๊ฒŒ ์ง€์ •ํ•˜์—ฌ ์š”์ฒญํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ์ตœ์‹  API ํ‘œ์ค€์ž…๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์—”๋“œํฌ์ธํŠธ๋ฅผ ํ†ตํ•ด ๊ณ ์ •๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์ œ๊ณตํ•˜๋Š” REST ๋ฐฉ์‹๊ณผ ๋‹ฌ๋ฆฌ, GraphQL์€ ๋‹จ์ผ ์—”๋“œํฌ์ธํŠธ๋ฅผ ์‚ฌ์šฉํ•ด ๋” ํšจ์œจ์ ์ด๊ณ  ์œ ์—ฐํ•œ ๋ฐ์ดํ„ฐ ํ†ต์‹ ์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค. REST๋Š” ์˜ค๋žซ๋™์•ˆ ๋„๋ฆฌ ์‚ฌ์šฉ๋œ ํ›Œ๋ฅญํ•œ API ๋ฐฉ์‹์ด์—ˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ตœ๊ทผ API ํ™˜๊ฒฝ์ด ๊ธ‰๋ณ€ํ•˜๋ฉด์„œ ๋ช‡ ๊ฐ€์ง€ ํ•œ๊ณ„์— ๋ถ€๋”ชํ˜”๊ณ , GraphQL์€ ์ด๋Ÿฌํ•œ ๋ฌธ์ œ์— ๋Œ€ํ•œ ํšจ๊ณผ์ ์ธ ํ•ด๊ฒฐ์ฑ…์„ ์ œ์‹œํ•ฉ๋‹ˆ๋‹ค. 1. ๋ชจ๋ฐ”์ผ ์‚ฌ์šฉ ์ฆ๊ฐ€: ์ €์‚ฌ์–‘ ๊ธฐ๊ธฐ๋‚˜ ๋ถˆ์•ˆ์ •ํ•œ ๋„คํŠธ์›Œํฌ ํ™˜๊ฒฝ์—์„œ๋Š” ๋ฐ์ดํ„ฐ ๋กœ๋”ฉ ํšจ์œจ์ด ๋งค์šฐ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. GraphQL์€ ๋„คํŠธ์›Œํฌ๋ฅผ ํ†ตํ•ด ์ „์†ก๋˜๋Š” ๋ฐ์ดํ„ฐ์˜ ์–‘์„ ์ตœ์†Œํ™”ํ•˜์—ฌ ๋ชจ๋ฐ”์ผ ํ™˜๊ฒฝ์—์„œ ์„ฑ๋Šฅ์„..

GraphQL 2025.07.28