ํ‹ฐ์Šคํ† ๋ฆฌ ๋ทฐ

TIL

GraplQL (1) ๊ฐœ๋…

sayho 2022. 11. 13. 12:56

๐Ÿฆฅ 1. Graph QL ๊ฐœ๋…

1.1 GraphQL ์ด๋ž€?

  • GraphQL ์€ API๋ฅผ ์œ„ํ•œ ์งˆ์˜์–ด์ด์ž ์กด์žฌํ•˜๋Š” ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•ด ์ฟผ๋ฆฌ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ์–ธ์–ด
  • API ์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์™„๋ฒฝํ•˜๊ณ  ์ดํ•ด๊ฐ€๋Šฅํ•œ ์ƒํƒœ๋กœ ์ œ๊ณต
  • Client ๊ฐ€ GraphQL ํ˜•์‹์œผ๋กœ ์š”์ฒญํ•˜๋ฉด ํ•„์š”ํ•˜๊ณ  ํ•„์š”ํ•˜์ง€ ์•Š์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ •ํ™•ํ•˜๊ฒŒ ์š”์ฒญํ•  ์ˆ˜ ์žˆ๋‹ค

1.2 GraphQL ์žฅ๋‹จ์ 

์žฅ์ 
  • ํ•„์š”ํ•˜๊ณ  ์–ป๊ณ ์ž ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋งŒ ์ •ํ™•ํ•˜๊ฒŒ ์š”์ฒญ ๊ฐ€๋Šฅ
    • GraphQL ์ฟผ๋ฆฌ๋กœ API ์— ์š”์ฒญ์„ ๋ณด๋‚ด๋ฉด ์ •ํ™•ํ•˜๊ฒŒ ์›ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋งŒ ๋ฐ›์„ ์ˆ˜ ์žˆ์Œ
    • ์–ด๋–ค ๋ฐ์ดํ„ฐ๋ฅผ ๋ฆฌํ„ด๋ฐ›์„ ์ง€ ๋ช…์‹œํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์˜ˆ์ธก๊ฐ€๋Šฅํ•œ ๊ฒฐ๊ณผ๋งŒ ๋ฆฌํ„ด
  • ์„œ๋ฒ„๊ฐ€ ์•„๋‹Œ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๊ฐ€์ง€๊ณ  ์˜ฌ ๋ฐ์ดํ„ฐ๋ฅผ ํ†ต์ œํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋น ๋ฅด๊ณ  ์•ˆ์ •์ ์ž„
  • REST API ๋Š” ์—ฌ๋Ÿฌ URI ๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ๋กœ๋”ฉํ•˜์ง€๋งŒ GraphQL ์€ ๋‹จ์ผ ์š”์ฒญ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์˜ฌ ์ˆ˜ ์žˆ์Œ
๋‹จ์ 
  • ํŒŒ์ผ ์—…๋กœ๋“œ ๊ตฌํ˜„ ๋ฐฉ๋ฒ•์ด ์ •ํ•ด์ ธ ์žˆ์ง€ ์•Š์•„์„œ ์ง์ ‘ ๊ตฌํ˜„ํ•ด์•ผ ํ•œ๋‹ค
  • ๊ณ ์ •๋œ ์š”์ฒญ๊ณผ ์‘๋‹ต์ด ํ•„์š”ํ•  ๋•Œ query๋กœ ์ธํ•ด ์š”์ฒญ์˜ ํฌ๊ธฐ๊ฐ€ REST API ๋ฐฉ์‹๋ณด๋‹ค ํฌ๋‹ค

1.3 SQL query ์™€ GraphQL

  • SQL Query๋Š” ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ๊ฐ€์ ธ์˜ค๊ธฐ ์œ„ํ•œ ์งˆ์˜์–ด
  • GraphQL ์€ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ์„œ๋ฒ„๋กœ ๋ถ€ํ„ฐ ํšจ์œจ์ ์œผ๋กœ ๊ฐ€์ ธ์˜ค๊ธฐ ์œ„ํ•œ ์งˆ์˜์–ด

๐Ÿฆฅ 2. REST API ์™€ GraphQL

2.1 REST API

  • GraphQL ๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๊ตํ™˜ํ•˜๊ธฐ ์œ„ํ•œ ์ธํ„ฐํŽ˜์ด์Šค
  • ์ž์›์„ ์ด๋ฆ„์œผ๋กœ ๊ตฌ๋ถ„ํ•˜์—ฌ ๊ด€๋ฆฌํ•˜๋Š” ๊ฒƒ
  • URI๋ฅผ ํ†ตํ•ด ์ž์›์„ ๋ช…์‹œํ•˜๊ณ  HTTP Method ๋ฅผ ํ†ตํ•ด ์ž์›์— ๋Œ€ํ•œ ์ฒ˜๋ฆฌ ๋ฐฉ๋ฒ•์„ ๋ช…์‹œ

2.2 REST API ์™€ GraphQL ์˜ ์—”๋“œ ํฌ์ธํŠธ ๋น„๊ต

๋”๋ณด๊ธฐ

๐Ÿ’ก ๊ฒฝ๊ธฐ ์ •๋ณด๋“ค์„ ์กฐํšŒํ•˜๋Š” ํŽ˜์ด์ง€์—์„œ ๋ณด์—ฌ์ค˜์•ผ ํ•  ๋ฐ์ดํ„ฐ

1. Teams : ์—ฌ๋Ÿฌ๊ฐœ์˜ ํŒ€ ์ •๋ณด

2. Players : ํŒ€์˜ ์„ ์ˆ˜๋“ค ์ •๋ณด

3. Matches : ์—ฌ๋Ÿฌ๊ฐœ ํŒ€์˜ ๊ฒฝ๊ธฐ ์ •๋ณด

ํด๋ผ์ด์–ธํŠธ์—์„œ REST API ๋ฐฉ์‹์œผ๋กœ ํ˜ธ์ถœํ•  ๊ฒฝ์šฐ
  • Team ์ •๋ณด๋ฅผ ๊ฐ€์ ธ์˜ค๊ธฐ ์œ„ํ•ด GET /team/{teamID} ํ˜ธ์ถœ
  • ํ•ด๋‹น Team ์˜ Matche ์ •๋ณด๋ฅผ ๊ฐ€์ ธ์˜ค๊ธฐ ์œ„ํ•ด GET /match/list/{teamId} ํ˜ธ์ถœ
ํด๋ผ์ด์–ธํŠธ์—์„œ GraphQL ๋ฐฉ์‹์œผ๋กœ ํ˜ธ์ถœํ•  ๊ฒฝ์šฐ
query {
	team(teamId: 1) {
		teamname
		teamcoach
		teamcolor
    	}
	matches(teamId: 1) {
		matchdate
		matchteam
	}
}

 

 

๋Œ“๊ธ€
๊ณต์ง€์‚ฌํ•ญ
์ตœ๊ทผ์— ์˜ฌ๋ผ์˜จ ๊ธ€
์ตœ๊ทผ์— ๋‹ฌ๋ฆฐ ๋Œ“๊ธ€
Total
Today
Yesterday
๋งํฌ
ยซ   2024/07   ยป
์ผ ์›” ํ™” ์ˆ˜ ๋ชฉ ๊ธˆ ํ† 
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
๊ธ€ ๋ณด๊ด€ํ•จ