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

๐Ÿฆฅ 1. Spring for GraphQL ๊ฐœ์š” ๋ฐ ์š”๊ตฌ์‚ฌํ•ญ

Spring GraphQL์€ Spring ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— Java์šฉ GraphQL ์„ ์ œ๊ณตํ•œ๋‹ค. 

๋”๋ณด๊ธฐ

๐Ÿ’ก Spring GraphQL ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•œ ํ•„์š” ์กฐ๊ฑด

1. JDK 8

2. Spring Framework 5.3  / Spring Boot 2.7 ์ด์ƒ

-- GraphQL Java 18๊ณผ Spring Data , ์ตœ์‹  QueryDSL ์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅ(?) 

๐Ÿฆฅ  2. ์„œ๋ฒ„ ์ „์†ก

Spring GraphQL ์€ HTTP, WebSocket, RSocket ์ƒ์—์„œ GraphQL ์„ ๋‹ค๋ฃจ๋Š” ๊ฒƒ์„ ์ง€์›ํ•œ๋‹ค. 

2.1 HTTP

GraphQLHttpHandler ๋Š” HTTP ์š”์ฒญ์„ GraphQL ๋กœ ๋‹ค๋ฃจ๊ณ  Http ์š”์ฒญ์— ๋Œ€ํ•œ ์ˆ˜ํ–‰์„ ์œ„ํ•ด ์ธํ„ฐ์…‰ํ„ฐ์—๊ฒŒ ์œ„์ž„ํ•œ๋‹ค. 

GraphQL ์š”์ฒญ์€ ๋ฐ˜๋“œ์‹œ HTTP POST ๋ฅผ ์‚ฌ์šฉํ•ด์•ผํ•˜๊ณ  HTTP์—์„œ ๋™์ž‘ํ•˜๋Š” GraphQL ์ด๋ผ๋Š” ๋ชฉ์ ์„ ์ •์˜ํ•˜์—ฌ request body์— ๋ถ™์ด๊ณ  JSON ์„ ํฌํ•จํ•ด์•ผํ•œ๋‹ค. media type ์˜ ๊ฐ€์žฅ ๊ธฐ๋ณธ์ด๊ณ  ์„ ํ˜ธ๋˜๋Š” ๊ฒƒ์€ application/graphql+json ์ด๋‹ค. application/json ๋„ ์ง€์›ํ•˜์ง€๋งŒ ๊ตฌ์ฒด์ ์œผ๋กœ ๋ช…์‹œํ•˜๋Š” application/graphql+json ์„ ์“ฐ๋Š”๊ฒŒ ์ข‹๋‹ค. 

 

๐Ÿฆฅ  3. GraphQLSource

GraphQLSource๋Š” request๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ์ธ์Šคํ„ด์Šค์ธ graphql.Graphql ์— ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•œ ๊ฐ€์žฅ ํ•ต์‹ฌ์ ์ธ ์ถ”์ƒ ํด๋ž˜์Šค์ด๋‹ค.

Spring Boot Starter๋Š” GraphQlSource ์ธ์Šคํ„ด์Šค๋ฅผ ๊ธฐ๋ณธ ํด๋ž˜์Šค์ธ GraphQlSource.Builder๋ฅผ ํ†ตํ•ด ์ดˆ๊ธฐํ™”ํ•˜๊ณ  ์•„๋ž˜์™€ ๊ฐ™์€ ๊ณผ์ •์„ ๊ฑฐ์นœ๋‹ค. 

๐Ÿฆฅ  4. GraphQL Schema ํŒŒ์ผ์˜ ์œ„์น˜

GraphQlSource.Builder ๋Š” ์ž์› ์ธ์Šคํ„ด์Šค๋“ค๊ณผ ํ•จ๊ป˜ ์„ค์ •๋  ์ˆ˜ ์žˆ๋‹ค. ์ด๊ฒƒ์€ GraphQL ์Šคํ‚ค๋งˆ ํŒŒ์ผ๋“ค์ด ์–ด๋–ค ์œ„์น˜์— ์žˆ๋“ ์ง€ ๋กœ๋“œ๋  ์ˆ˜ ์žˆ๋‹ค๋Š” ๋œป์ด๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ Spring Boot Starter๋Š” classpath:graphql/**  ์ฆ‰ src/main/resources/graphql ํ•˜์œ„์— ์œ„์น˜ํ•ด ์žˆ๋Š” ํ™•์žฅ์ž .graphqls ๊ฐ€ ๋ถ™์€ ์Šคํ‚ค๋งˆ ํŒŒ์ผ์ด๋‚˜ .gqls ๊ฐ€ ๋ถ™์€ ์Šคํ‚ค๋งˆ ํŒŒ์ผ์„ ์ฐพ๋Š”๋‹ค. 

๋Œ“๊ธ€
๊ณต์ง€์‚ฌํ•ญ
์ตœ๊ทผ์— ์˜ฌ๋ผ์˜จ ๊ธ€
์ตœ๊ทผ์— ๋‹ฌ๋ฆฐ ๋Œ“๊ธ€
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
๊ธ€ ๋ณด๊ด€ํ•จ