GraphQL๊ณผ Apollo ๋‘๋ฒˆ์งธ ์ด์•ผ๊ธฐ - REST API๋ž€?

2023. 11. 16. 18:43ใ†Back-End ์ž‘์—…์‹ค/๊ธฐํƒ€ ์ฐธ๊ณ  ์ž๋ฃŒ

728x90
๋ฐ˜์‘ํ˜•

 

 

 

์นด์นด์˜คํŽ˜์ด | ๋งˆ์Œ ๋†“๊ณ  ๊ธˆ์œตํ•˜๋‹ค

์—ฌ๊ธฐ๋ฅผ ๋ˆŒ๋Ÿฌ ๋งํฌ๋ฅผ ํ™•์ธํ•˜์„ธ์š”.

qr.kakaopay.com

 

 

 

GraphQL๊ณผ ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ๋กœ ๊ฐœ๋ฐœํ•˜๋Š” ์›น ์„œ๋น„์Šค:์„ค๊ณ„๋ถ€ํ„ฐ ๊ฐœ๋ฐœ·๋ฐฐํฌ๊นŒ์ง€ ๋”ฐ๋ผ ํ•˜๋ฉฐ ์™„์„ฑํ•˜๋Š” ์›น ํ’€

COUPANG

www.coupang.com

"์ด ํฌ์ŠคํŒ…์€ ์ฟ ํŒก ํŒŒํŠธ๋„ˆ์Šค ํ™œ๋™์˜ ์ผํ™˜์œผ๋กœ, ์ด์— ๋”ฐ๋ฅธ ์ผ์ •์•ก์˜ ์ˆ˜์ˆ˜๋ฃŒ๋ฅผ ์ œ๊ณต๋ฐ›์Šต๋‹ˆ๋‹ค."

 




๐Ÿ—‚ ๋ชฉ์ฐจ

โœ… GraphQL๊ณผ Apollo ์ฒซ๋ฒˆ์งธ ์ด์•ผ๊ธฐ - ๊ฐœ๋… ์ตํžˆ๊ธฐ
โœ… GraphQL๊ณผ Apollo ๋‘๋ฒˆ์งธ ์ด์•ผ๊ธฐ - REST API๋ž€?
โœ… GraphQL๊ณผ Apollo ์„ธ๋ฒˆ์งธ ์ด์•ผ๊ธฐ - GraphQL์˜ ์ •๋ณด ์ฃผ๊ณ  ๋ฐ›๋Š” ๋ฐฉ์‹

โœ… GraphQL๊ณผ Apollo ๋„ค๋ฒˆ์งธ ์ด์•ผ๊ธฐ - Apollo๋ž€?
โœ… GraphQL๊ณผ Apollo ๋‹ค์„ฏ๋ฒˆ์งธ ์ด์•ผ๊ธฐ - GraphQL์„ ๊ฐ„๋‹จํ•˜๊ฒŒ ๊ตฌํ˜„ํ•ด ๋ณด์•„์š” ๐Ÿ˜€
โœ… GraphQL๊ณผ Apollo ์—ฌ์„ฏ๋ฒˆ์งธ ์ด์•ผ๊ธฐ - GraphQL Moduleํ™”์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์•„์š” ๐Ÿ˜€
โœ… GraphQL๊ณผ Apollo ์ผ๊ณฑ๋ฒˆ์งธ ์ด์•ผ๊ธฐ - GraphQL Data Type์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์•„์š” ๐Ÿ˜€
โœ… GraphQL๊ณผ Apollo ์—ฌ๋Ÿ๋ฒˆ์งธ ์ด์•ผ๊ธฐ - GraphQL Union๊ณผ Interface ๊ทธ๋ฆฌ๊ณ  ์ธ์ž์™€ ์ธํ’‹ ํƒ€์ž…์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์•„์š” ๐Ÿ˜€
โœ… GraphQL๊ณผ Apollo ์•„ํ™‰๋ฒˆ์งธ ์ด์•ผ๊ธฐ - Java + Spring Boot์—์„œ GraphQL ์‚ฌ์šฉํ•ด ๋ณด๊ธฐ - ์‹ค์Šต ํ™˜๊ฒฝ ๊ตฌ์„ฑ
โœ… GraphQL๊ณผ Apollo ์—ด๋ฒˆ์งธ ์ด์•ผ๊ธฐ - Java + Spring Boot์—์„œ GraphQL ์‚ฌ์šฉํ•ด ๋ณด๊ธฐ - ์‹ค์Šต ํ•ด๋ณด๊ธฐ
โœ… GraphQL๊ณผ Apollo ์—ด ํ•œ๋ฒˆ์งธ ์ด์•ผ๊ธฐ - TypeScript + Nest.js์—์„œ GraphQL ์‚ฌ์šฉํ•ด ๋ณด๊ธฐ - ์‹ค์Šต ํ™˜๊ฒฝ ๊ตฌ์„ฑ
โœ… 
GraphQL๊ณผ Apollo ์—ด ๋‘๋ฒˆ์งธ ์ด์•ผ๊ธฐ - TypeScript + Nest.js์—์„œ GraphQL ์‚ฌ์šฉํ•ด ๋ณด๊ธฐ - ์‹ค์Šต ํ™˜๊ฒฝ ํ…Œ์ŠคํŠธ
โœ… GraphQL๊ณผ Apollo ์—ด ์„ธ๋ฒˆ์งธ ์ด์•ผ๊ธฐ - TypeScript + Nest์—์„œ GraphQL ์‚ฌ์šฉํ•ด ๋ณด๊ธฐ - ์‹ค์Šต ํ•ด๋ณด๊ธฐ
โœ… 
GraphQL๊ณผ Apollo ์—ด ๋„ค๋ฒˆ์งธ ์ด์•ผ๊ธฐ - React์™€ Apollo Client
โœ… GraphQL๊ณผ Apollo ์—ด๋‹ค์„ฏ๋ฒˆ์งธ ์ด์•ผ๊ธฐ - React์™€ Apollo Client - Query์™€ Mutation ์‚ฌ์šฉํ•˜์—ฌ ์›น ํŽ˜์ด์ง€ ๋งŒ๋“ค๊ธฐ
โœ… GraphQL๊ณผ Apollo ์—ด ์—ฌ์„ฏ๋ฒˆ์งธ ์ด์•ผ๊ธฐ - Kotlin + Spring Boot์—์„œ GraphQL ์‚ฌ์šฉํ•ด ๋ณด๊ธฐ - ์‹ค์Šต ํ™˜๊ฒฝ ๊ตฌ์„ฑ
โœ… GraphQL๊ณผ Apollo ์—ด ์ผ๊ณฑ๋ฒˆ์งธ ์ด์•ผ๊ธฐ - Kotlin + Spring Boot์—์„œ GraphQL ์‚ฌ์šฉํ•ด ๋ณด๊ธฐ - ์‹ค์Šต ํ•ด๋ณด๊ธฐ


๐Ÿค” ๋‚ด๊ฐ€ ๋งŒ๋‚œ ๋ฌธ์ œ

โš ๏ธ [Nest.js] TypeORM Table ๊ด€๊ณ„๊ฐ€ ๋งบ์–ด์กŒ์„ ๋•Œ, Seeding (feat. Migration)
โš ๏ธ [Spring Boot 3.0] Could not resolve org.springframework.boot:spring-boot-gradle-plugin
โš ๏ธ [Spring Boot 3] Spring Doc(Swagger) White Label Error


๐Ÿ“‹ ๋ถ€๋ก

๐Ÿ” [Nest.js] ์ดˆ๊ธฐ ํ™˜๊ฒฝ ๊ตฌ์„ฑ (feat. TypeORM, QueryBuilder, GraphQL, Apollo)
๐Ÿ” [SOLID][Nest.js][Java + Spring] Interface๋ฅผ ํ™œ์šฉํ•œ ๊ฒฐํ•ฉ๋„ ๋ถ„๋ฆฌ (Interface๋ฅผ ์ด์šฉํ•œ Dependency Injection - DI)

 

 

 

๐Ÿš€ REST API

    ๐Ÿ”ฝ REST API

        ๐Ÿ“ฆ ๊ฐœ๋…

์˜ˆ์ „์— ์ฃผ๋‹ˆ๊ฐ€ REST API์— ๋Œ€ํ•ด ๊ณต๋ถ€ํ•œ ์ž๋ฃŒ๊ฐ€ ์žˆ๋Š”๋ฐ, ์ด๊ฒƒ๋„ ์ฐธ๊ณ ํ•ด ๋ณด์‹œ๋ฉด ์ข‹์„ ๊ฑฐ ๊ฐ™์•„์š”.

 

[๋„์ „ ๊ธฐ์ˆ !] REST API

์•ˆ๋…•ํ•˜์„ธ์š”? ์ฃผ๋‹ˆํ•˜๋ž‘ ์ž…๋‹ˆ๋‹ค. ๋ณธ ๋‚ด์šฉ์€ ์ฃผ๋‹ˆํ•˜๋ž‘์ด Web ๊ฐœ๋ฐœ ํ”„๋กœ์ ํŠธ๋ฅผ ํ•˜๋ฉด์„œ ๋„์ „ํ–ˆ๋˜ ๊ธฐ์ˆ ๋“ค์— ๋Œ€ํ•œ ๋‚ด์šฉ์„ ์ •๋ฆฌํ•˜๋Š” ๊ณณ ์ž…๋‹ˆ๋‹ค! ์ด ๊ธ€์€ ํ•จ๊ป˜ ํ”„๋กœ์ ํŠธ ํ–ˆ๋˜ Back End ๊ฟˆ๋‚˜๋ฌด Crew๊ฐ€ ์ž‘์„ฑํ•œ

junyharang.tistory.com

728x90

์˜ˆ์ „ ๊ธ€์—์„œ ์ข€ ๋” ์ง€์‹์ด ์Œ“์ธ ์ฃผ๋‹ˆ๊ฐ€ ๋‹ค์‹œ ํ•œ๋ฒˆ REST API์— ๋Œ€ํ•ด ์ •๋ฆฌํ•ด ๋ณด๊ณ ์ž ํ•ด์š”.
์œ„์˜ ๊ธ€์„ ์ž‘์„ฑํ•  ๋•Œ๋ณด๋‹ค ์ง€์‹์ด ๊ฝค ๋งŽ์ด ์Œ“์˜€๊ธฐ ๋•Œ๋ฌธ์ด์—์š”.

REST API๋Š” ์†Œํ”„ํŠธ์›จ์–ด๊ฐ„ ์ •๋ณด๋ฅผ ์ฃผ๊ณ  ๋ฐ›๋Š” ๋ฐฉ์‹์ด์—์š”.
์ด๋Š” GraphQL์ด ๋‚˜์˜ค๊ธฐ ์ „๋ถ€ํ„ฐ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์—ˆ๊ณ , GraphQL์ด REST API๋ณด๋‹ค ์ข‹๊ณ , ๋‚˜์จ์˜ ์ฐจ์ด๊ฐ€ ์•„๋‹ˆ๋ผ ์–ด๋–ค ์ƒํ™ฉ๊ณผ ์šฉ๋„์™€ ์ž‘์—… ํŠน์„ฑ์— ๋”ฐ๋ผ ์ ํ•ฉํ•œ ๊ฒƒ์„ ์‚ฌ์šฉํ•˜๋ฉด ๋˜๋Š” ๊ฑฐ์—์š”.

REST API์—์„œ ์ข‹์€ ์˜ˆ์ œ๋Š” Client(ํด๋ผ์ด์–ธํŠธ)์™€ Server(์„œ๋ฒ„) ๊ฐ„์˜ ์ •๋ณด๋ฅผ ์ฃผ๊ณ  ๋ฐ›๋Š” ๊ฑธ ์˜ˆ์‹œ๋กœ ๋“ค ์ˆ˜ ์žˆ์–ด์š”.
์šฐ๋ฆฌ๊ฐ€ ์›น ๋ธŒ๋ผ์šฐ์ €๋‚˜ ์Šค๋งˆํŠธํฐ์„ ์‚ฌ์šฉํ•˜์—ฌ ์–ด๋–ค ์„œ๋น„์Šค๋ฅผ ์ด์šฉํ•  ๋•Œ, ํ•ด๋‹น ํด๋ผ์ด์–ธํŠธ๋Š” ์„œ๋ฒ„์™€์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ  ๋ฐ›์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ด ๋•Œ, ํด๋ผ์ด์–ธํŠธ๋Š” Request param ํ˜น์€ Request Body๋ฅผ ํ†ตํ•ด ์„œ๋ฒ„์— ๋ฐ์ดํ„ฐ๋ฅผ ์š”์ฒญํ•˜๊ฒŒ ๋ผ์š”.
๊ทธ๋Ÿผ ์„œ๋ฒ„๋Š” ์š”์ฒญ ๋ฐ›์€ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ์ž‘์—…์„ ํ†ตํ•œ ๋’ค ์‘๋‹ต(Response)๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•˜๊ฒŒ ๋ ๊ฑฐ์—์š”.

์ด๋Ÿฐ ์—„์ฒญ๋‚œ ์š”์ฒญ๊ณผ ์‘๋‹ต์„ ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„๋Š” ์ง€์†์ ์œผ๋กœ ๋ฌด์ˆ˜ํžˆ ๋งŽ์ด ๋ฐ˜๋ณตํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด๋Ÿฐ ํ˜•์‹์„ ๋งŒ๋“ค์–ด ๋†“์•˜๋‹ค๋ฉด ๋”์šฑ ํŽธ๋ฆฌํ•˜๊ฒ ์ง€์š”?



์˜ˆ๋ฅผ ๋“ค์–ด ์‚ฌ๋žŒ๋“ค์ด ์šฐํŽธ์„ ์ฃผ๊ณ  ๋ฐ›์„ ๋•Œ๋„ ์œ„์™€ ๊ฐ™์ด ์šฐํŽธ๋ฌผ ์†ก์žฅ์— ๋ณด๋‚ด๋Š” ์‚ฌ๋žŒ๊ณผ ๋ฐ›๋Š” ์‚ฌ๋žŒ์˜ ์ •๋ณด๋ฅผ ์ž…๋ ฅํ•  ์ˆ˜ ์žˆ๋Š” ํ˜•์‹์„ ์ •ํ•ด ๋†“๊ณ  ์‚ฌ์šฉ ํ•˜์ž–์•„์š”? 

REST API์˜ ํ˜•์‹์€ URI ํ˜•์‹(์–ด๋–ค ์ •๋ณด๋ฅผ) X ์š”์ฒญ ๋ฐฉ์‹(์–ด๋–ป๊ฒŒ ์š”์ฒญํ•  ๊ฒƒ์ธ๊ฐ€?)๋กœ ์ด๋ค„์ ธ ์žˆ์–ด์š”.

์š”์ฒญ ํ˜•์‹ ์šฉ ๋„
GET ์„œ๋ฒ„๋กœ ๋ถ€ํ„ฐ ์ •๋ณด ๋ฐ›์•„์˜ค๊ธฐ
POST ์„œ๋ฒ„์— ์ •๋ณด ์ž…๋ ฅ ๋ฐ ์ €์žฅํ•˜๊ธฐ
PUT/PATCH ์„œ๋ฒ„์— ์ €์žฅ๋œ ์ •๋ณด ์ˆ˜์ •ํ•˜๊ธฐ
DELETE ์„œ๋ฒ„์— ์ €์žฅ๋œ ์ •๋ณด ์‚ญ์ œํ•˜๊ธฐ


๊ฐ„๋‹จํ•˜๊ฒŒ GET Method๋ฅผ ์ด์šฉํ•˜์—ฌ ์„œ๋ฒ„ ์ •๋ณด๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๊ฒƒ์— ๋Œ€ํ•ด ์•Œ์•„๋ณผ๊ฒŒ์š”.

GET localhost:3000/api/team

 

REST API ๋ฐฉ์‹์—์„œ ์œ„์™€ ๊ฐ™์ด ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„์— ์ •๋ณด๋ฅผ ๊ฐ€์ ธ์˜ค๊ณ  ์‹ถ์„ ๋•Œ, URI(/api/team) ์ฆ‰, ํŒ€์˜ ์ •๋ณด๋ฅผ GET์œผ๋กœ ์š”์ฒญํ•˜๊ฒ ๋‹ค๋กœ ํ•˜์—ฌ team ์ •๋ณด๋ฅผ ๊ฐ€์ ธ์˜ค๊ฒ ๋‹ค๋Š” ์˜๋ฏธ๊ฐ€ ๋˜๋Š” ๊ฑฐ์—์š”.

REST API๋Š” URI์™€ Http Method๋ฅผ ์ด์šฉํ•˜์—ฌ ์ •๋ณด๋ฅผ ์ฃผ๊ณ  ๋ฐ›๋Š” ๋ฐฉ์‹์ด์—์š”.

 

 

 

 

 

 

    ๐Ÿ”ฝ REST API ํ•œ๊ณ„

        ๐Ÿ“ฆ GraphQL์ด ๋‚˜์˜จ ๋ฐฐ๊ฒฝ

๊ทธ๋ ‡๋‹ค๋ฉด GraphQL์€ ์™œ ๋‚˜์™”๊ณ , REST API์˜ ํ•œ๊ณ„๋Š” ๋ฌด์—‡์ผ๊นŒ์š”?

์˜ˆ๋ฅผ ๋“ค์–ด ์–ด๋–ค ํšŒ์‚ฌ์— ๊ฐ ํŒ€์˜ ๊ด€๋ฆฌ์ž์™€ ์‚ฌ๋ฌด์‹ค ํ˜ธ์ˆ˜ ์ •๋ณด๋งŒ ์–ป๊ณ  ์‹ถ์„ ๋•Œ, REST API๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋ฉด ํด๋ผ์ด์–ธํŠธ๋Š” ํŒ€์— ์ •๋ณด๋ฅผ ์š”์ฒญํ•˜๊ฒŒ ๋  ๊ฑฐ๊ณ , ์„œ๋ฒ„๋Š” ๊ทธ ์ •๋ณด์— ํ•ด๋‹น ํ•˜๋Š” ์ •๋ณด๋ฅผ ๋ชจ๋‘ ์ „๋‹ฌํ•  ๊ฑฐ์—์š”.

์ฆ‰, ์•Œ๊ณ  ์‹ถ์ง€ ์•Š๋Š” ์ •๋ณด๊นŒ์ง€ ๋ชจ๋‘ ์ „๋‹ฌํ•œ๋‹ค๋Š” ํ•œ๊ณ„๊ฐ€ ์žˆ๋‹ต๋‹ˆ๋‹ค. ์ด๋Š” ๋‚ญ๋น„๋˜๋Š” ๋ฐ์ดํ„ฐ์˜ ์–‘์ด ์žˆ๋‹ค๋Š” ๊ฒƒ์ด๊ณ , ์ด๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ์„œ๋ฒ„์— ์ž์›์ด ์†Œ๋ชจ๋œ๋‹ค๋Š” ๋‹จ์ ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ฑฐ์—์š”. ์ด๋Ÿฐ ๋ฌธ์ œ๋ฅผ Overfetching์ด๋ผ๊ณ  ๋ถ€๋ฅด๊ณ  ์žˆ์–ด์š”.

๋˜ ํ•˜๋‚˜์˜ ํ•œ๊ณ„๊ฐ€ ์žˆ๋Š”๋ฐ, ๋ฐ”๋กœ ํŠน์ • ํŒ€์˜ ๊ด€๋ฆฌ์ž์™€ ํŒ€์›๋“ค ๋ช…๋‹จ์ด ํ•„์š”ํ•˜๋‹ค๋Š” ์ƒํ™ฉ์ด์—์š”.
์ฆ‰, ๋‚ด๊ฐ€ ์›ํ•˜๋Š” ์ •๋ณด๋“ค์ด ์—ฌ๋Ÿฌ ๊ณ„์ธต์˜ ๋ฐ์ดํ„ฐ์— ๊ฑธ์ณ ์žˆ์„ ๋•Œ๊ฐ€ ์žˆ์–ด์š”.

GET localhost:3000/api/team

๋ฐ˜์‘ํ˜•

 

http://localhost:3000/api/people




์˜ˆ๋ฅผ ๋“ค์–ด ์œ„์™€ ๊ฐ™์ด ํŒ€๋“ค์˜ ์ •๋ณด๋ฅผ ๋ฐ›์•„์˜ค๋Š” ์š”์ฒญ์ด ๋”ฐ๋กœ ์žˆ๊ณ , ํ•ด๋‹น ํŒ€์›์˜ ์ •๋ณด๋ฅผ ๋ฐ›์•„์˜ค๋Š” ์š”์ฒญ์ด ๋”ฐ๋กœ ์žˆ์–ด์•ผ ํ•ด์š”.

๋ฌผ๋ก  ์ด ๋ถ€๋ถ„์„ ์„œ๋ฒ„์—์„œ ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค ์กฐํšŒ ์‹œ Join ๋“ฑ์„ ์‚ฌ์šฉํ•ด์„œ ํ•œ๋ฒˆ์— ๊ฐ€์ ธ์˜ฌ ์ˆ˜๋„ ์žˆ์ง€๋งŒ ๊ทธ๋ ‡๊ฒŒ ๊ตฌ์„ฑ์ด ๋˜์–ด ์žˆ์ง€ ์•Š๋‹ค๋ฉด? ๋‘ ๋ฒˆ์˜ ์š”์ฒญ์„ ๋ณด๋‚ด ๋‘ ๋ฒˆ์˜ ์‘๋‹ต์„ ๋ฐ›์•„์•ผ ํ•œ๋‹ค๋Š” ํ•œ๊ณ„๊ฐ€ ๋ฐœ์ƒํ•ด์š”.

์œ„์˜ ๋ฌธ์ œ๋Š” ๋„ˆ๋ฌด ๋ฐฉ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์ „๋‹ฌํ•œ๋‹ค๋Š” ๊ฒƒ์ด ๋ฌธ์ œ์ง€๋งŒ, ์ด๋ฒˆ์—๋Š” ๋„ˆ๋ฌด ์ ์€ ์ •๋ณด๊ฐ€ ์ „๋‹ฌ๋œ๋‹ค๋Š” ๋ฌธ์ œ ์ฆ‰, Underfetching์ด ๋ฐœ์ƒํ•œ๋‹ค๋Š” ํ•œ๊ณ„์— ์ฆ‰๋ฉดํ•˜๊ณ  ์žˆ์–ด์š”.

GraphQL์€ ์œ„์™€ ๊ฐ™์ด Overfetching๊ณผ Underfetching ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜์—ฌ ์ตœ์†Œํ•œ์˜ ์š”์ฒญ์œผ๋กœ ๋‚ด๊ฐ€ ์›ํ•˜๋Š” ์ •๋ณด๋งŒ ๋”ฑ ์–ป๊ณ  ์‹ถ๋‹ค!์˜ ํ•„์š”์„ฑ์—์„œ ๋‚˜์˜ค๊ฒŒ ๋œ ์นœ๊ตฌ์—์š”.


 

 

 

 

GraphQL๊ณผ ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ๋กœ ๊ฐœ๋ฐœํ•˜๋Š” ์›น ์„œ๋น„์Šค:์„ค๊ณ„๋ถ€ํ„ฐ ๊ฐœ๋ฐœ·๋ฐฐํฌ๊นŒ์ง€ ๋”ฐ๋ผ ํ•˜๋ฉฐ ์™„์„ฑํ•˜๋Š” ์›น ํ’€

COUPANG

www.coupang.com

"์ด ํฌ์ŠคํŒ…์€ ์ฟ ํŒก ํŒŒํŠธ๋„ˆ์Šค ํ™œ๋™์˜ ์ผํ™˜์œผ๋กœ, ์ด์— ๋”ฐ๋ฅธ ์ผ์ •์•ก์˜ ์ˆ˜์ˆ˜๋ฃŒ๋ฅผ ์ œ๊ณต๋ฐ›์Šต๋‹ˆ๋‹ค."

 

 

 

๐Ÿง ์ฐธ๊ณ  ์ž๋ฃŒ

ํ•ด๋‹น ๋‚ด์šฉ์€ ์•„๋ž˜ ๊ฐ•์˜๋ฅผ ๊ณต๋ถ€ํ•˜๋ฉด์„œ ์ •๋ฆฌํ•œ ๋‚ด์šฉ์ž„์„ ์•Œ๋ ค ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

 

[๋ฌด๋ฃŒ] ์–„ํŒํ•œ GraphQL๊ณผ Apollo - ์ธํ”„๋Ÿฐ | ๊ฐ•์˜

โšก ์งง๊ณ  ๊ตต์€ ์ „์ฒด 90๋ถ„ ๊ฐ•์ขŒ! ์‚ฌ์ดํŠธ์˜ ์ฝ”๋“œ๋“ค์„ ๋ณต๋ถ™ํ•˜๋ฉฐ ๋น ๋ฅด๊ฒŒ GraphQL์„ ๋ฐฐ์šฐ๊ณ  ์•„ํด๋กœ ์‚ฌ์šฉ๋ฒ•์„ ์ตํžˆ์„ธ์š”., โฑ ์—ฌ๋Ÿฌ๋ถ„์˜ ์‹œ๊ฐ„์€ ์†Œ์ค‘ํ•ฉ๋‹ˆ๋‹ค. [์‚ฌ์ง„] ๐ŸŽข  GraphQL์ด ๋ญ”๊ฐ€์š”? ์„œ๋น„์Šค๋ฅผ ๊ตฌ์„ฑํ•˜๋Š”

www.inflearn.com

 

 

 

 

 

์นด์นด์˜คํŽ˜์ด | ๋งˆ์Œ ๋†“๊ณ  ๊ธˆ์œตํ•˜๋‹ค

์—ฌ๊ธฐ๋ฅผ ๋ˆŒ๋Ÿฌ ๋งํฌ๋ฅผ ํ™•์ธํ•˜์„ธ์š”.

qr.kakaopay.com

 

 

 

728x90
๋ฐ˜์‘ํ˜•