REST-API vs GraphQL-API

์ •์Šน์›ยท2023๋…„ 4์›” 4์ผ
0
post-thumbnail
post-custom-banner

๐Ÿ“’ ๋ชฉ์ฐจ

  • ๐Ÿ“Œ REST-API๋ž€?
  • ๐Ÿ“Œ GraphQL-API๋ž€?
  • ๐Ÿ“Œ ์ฐธ์กฐ

๐Ÿ“Œ REST-API๋ž€?

REST๋Š” REpresentational State Transfer๋ผ๋Š” ์šฉ์–ด์˜ ์•ฝ์ž์ด๋ฉฐ,

REST API๋Š” ๋ง ๊ทธ๋Œ€๋กœ RESTํ˜•์‹์˜ API๋ฅผ ๋งํ•œ๋‹ค.

REST API๋ž€ ํ•ต์‹ฌ ์ปจํ…์ธ  ๋ฐ ๊ธฐ๋Šฅ์„ ์™ธ๋ถ€ ์‚ฌ์ดํŠธ์—์„œ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์ œ๊ณต๋˜๋Š” ์ธํ„ฐํŽ˜์ด์Šค์ด๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, ๋„ค์ด๋ฒ„์—์„œ ๋ธ”๋กœ๊ทธ์— ๊ธ€์„ ์ €์žฅํ•˜๊ฑฐ๋‚˜, ๊ธ€ ๋ชฉ๋ก์„ ์ฝ์–ด๊ฐˆ ์ˆ˜ ์žˆ๋„๋ก ์™ธ๋ถ€์— ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๊ฑฐ๋‚˜ ์šฐ์ฒด๊ตญ์—์„œ ์šฐํŽธ๋ฒˆํ˜ธ๋ฅผ ์กฐํšŒํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๊ฑฐ๋‚˜, ๊ตฌ๊ธ€์—์„œ ๊ตฌ๊ธ€ ์ง€๋„๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์ œ๊ณตํ•˜๋Š” ๊ฒƒ๋“ค์„ ๋งํ•œ๋‹ค.

REST API๋Š” ์›น ๋ธŒ๋ผ์šฐ์ € ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์•ฑ ๋“ฑ ๋‹ค์–‘ํ•œ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋“ฑ์žฅํ•˜๋ฉด์„œ ๊ทธ๋Ÿฌํ•œ ํด๋ผ์ด์–ธํŠธ๋“ค์—๊ฒŒ ๋Œ€์‘ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๊ธฐ ์‹œ์ž‘ํ–ˆ๋‹ค.

์„œ๋น„์Šค ์—…์ฒด๋“ค์ด ๋‹ค์–‘ํ•œ REST API๋ฅผ ์ œ๊ณตํ•จ์œผ๋กœ์จ, ํด๋ผ์ด์–ธํŠธ๋Š” ์ด๋Ÿฌํ•œ REST API๋“ค์„ ์กฐํ•ฉํ•œ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ๋‹ค.

์ด๊ฒƒ์„ ๋งค์‹œ์—…(Mashup)์ด๋ผ๊ณ  ํ•œ๋‹ค.

์ด๋ ‡๊ฒŒ REST API๊ฐ€ ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๊ฒŒ ๋˜์—ˆ์ง€๋งŒ, REST๋ฅผ ๋…ผ๋ฌธ์œผ๋กœ ์ตœ์ดˆ ์†Œ๊ฐœํ•œ ๋กœ์ดํ•„๋”ฉ์€ ๋Œ€๋ถ€๋ถ„์˜ REST API๋ผ๊ณ  ํ•˜๋Š” ๊ฒƒ๋“ค์ด REST API๊ฐ€ ์•„๋‹ˆ๋ผ๊ณ  ๋งํ•˜๋Š”๋ฐ, ๊ทธ ์ด์œ ๋Š” ์•„ํ•ด์™€ ๊ฐ™์€ ์Šคํƒ€์ผ์„ ์ง€ํ‚ค์ง€ ๋ชปํ•œ ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

  • client-server
  • stateless
  • cache
  • uniform interface
  • layered system
  • code-on-demand (optional)
    ์—ฌ๊ธฐ์„œ ์Šคํƒ€์ผ์ด๋ž€ ์ œ์•ฝ์กฐ๊ฑด์˜ ์ง‘ํ•ฉ์„ ์˜๋ฏธํ•œ๋‹ค.

์ฆ‰, ์œ„์—์„œ ์–ธ๊ธ‰ํ•œ ๋‚ด์šฉ์„ ์ž˜ ์ง€์ผœ์•ผ๋งŒ REST๋ผ๊ณ  ๋งํ•  ์ˆ˜ ์žˆ๋‹ค.

๐Ÿ“Œ GraphQL-API๋ž€?

GraphQL์€ ํŽ˜์ด์Šค๋ถ์—์„œ ๋งŒ๋“  ์ฟผ๋ฆฌ ์–ธ์–ด์ด๋‹ค.

gql์€ ์›น ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ํšจ์œจ์ ์œผ๋กœ ๊ฐ€์ ธ์˜ค๋Š” ๊ฒƒ์ด ๋ชฉ์ ์ด๋‹ค.

gql์˜ ๋ฌธ์žฅ์€ ์ฃผ๋กœ ํด๋ผ์ด์–ธํŠธ ์‹œ์Šคํ…œ์—์„œ ์ž‘์„ฑํ•˜๊ณ  ํ˜ธ์ถœ ํ•œ๋‹ค.

โœ… GraphQL์˜ ๊ตฌ์กฐ

  1. ์ฟผ๋ฆฌ/๋ฎคํ…Œ์ด์…˜(query/mutation)
    ์ฟผ๋ฆฌ์™€ ๋ฎคํ…Œ์ด์…˜ ๊ทธ๋ฆฌ๊ณ  ์‘๋‹ต ๋‚ด์šฉ์˜ ๊ตฌ์กฐ๋Š” ์ง๊ด€์ ์ด๋‹ค. ์š”์ฒญํ•˜๋Š” ์ฟผ๋ฆฌ๋ฌธ์˜ ๊ตฌ์กฐ์™€ ์‘๋‹ต ๋‚ด์šฉ์˜ ๊ตฌ์กฐ๋Š” ๊ฑฐ์˜ ์ผ์น˜ํ•œ๋‹ค.

์•„๋ž˜ ์‚ฌ์ง„์˜ ์ขŒ์ธก์€ ์ฟผ๋ฆฌ๋ฌธ์ด๊ณ , ์šฐ์ธก์€ ์‘๋‹ต์—์ดํ„ฐ ํ˜•์‹์ด๋‹ค.

gql์—์„œ๋Š” ๊ตณ์ด ์ฟผ๋ฆฌ์™€ ๋ฎคํ…Œ์ด์…˜์„ ๋‚˜๋ˆ„๋Š”๋ฐ ๋‚ด๋ถ€์ ์œผ๋กœ ๋“ค์–ด๊ฐ€๋ฉด ์‚ฌ์‹ค์ƒ ์ด ๋‘˜์€ ๋ณ„ ์ฐจ์ด๊ฐ€ ์—†๋‹ค.

์ฟผ๋ฆฌ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๋Š”๋ฐ(R) ์‚ฌ์šฉํ•˜๊ณ , ๋ฎคํ…Œ์ด์…˜์€ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณ€์กฐ(CUD) ํ•˜๋Š”๋ฐ ์‚ฌ์šฉํ•œ๋‹ค๋Š” ๊ฐœ๋… ์ ์ธ ๊ทœ์•ฝ์„ ์ •ํ•ด ๋†“์€ ๊ฒƒ ๋ฟ์ด๋‹ค.

๐Ÿ“Œ ์ฐธ์กฐ

https://www.boostcourse.org/web316/lecture/16740?isDesc=false
https://tech.kakao.com/2019/08/01/graphql-basic/

post-custom-banner

0๊ฐœ์˜ ๋Œ“๊ธ€