๐ก ํ์ ์๋ ๋ฐ์ดํฐ๊น์ง ์ ๊ณตํจ(Overfetch)
-endpoint ๊ฐ ํ์ํ ์ ๋ณด๋ฅผ ์ถฉ๋ถํ ์ ๊ณตํ์ง ๋ชปํจ
๐ก ํด๋ผ์ด์ธํธ ๊ตฌ์กฐ ๋ณ๊ฒฝ ์ ์๋ํฌ์ธํธ ๋ณ๊ฒฝ ๋๋ ๋ฐ์ดํฐ ์์ ์ด ํ์
-EST API์์๋ ์์์ ํฌ๊ธฐ์ ํํ๋ฅผ ์๋ฒ์์ ๊ฒฐ์ ํ๊ธฐ ๋๋ฌธ์ ํด๋ผ์ด์ธํธ๊ฐ ์ง์ ๋ฐ์ดํฐ์ ํํ๋ฅผ ๊ฒฐ์ ํ ์ ์๊ธฐ ๋๋ฌธ
๐ ํ๋์ endpoint ์์ฒญ
-/graphql์ด๋ผ๋ ํ๋์ endpoint ๋ก ์์ฒญ์ ๋ฐ๊ณ ๊ทธ ์์ฒญ์ ๋ฐ๋ผ query , mutation์ resolver ํจ์๋ก ์ ๋ฌํด์ ์์ฒญ์ ์๋ต
-๋ชจ๋ ํด๋ผ์ด์ธํธ ์์ฒญ์ POST ๋ฉ์๋๋ฅผ ์ฌ์ฉ
-under & overfetching ์ฐ๋ ค ์์
๐ ๊ฐ๋ ฅํ playground
playground๋ผ๋ GUI๋ฅผ ์ด์ฉํด resolver ์ schema ๋ฅผ ํ ๋์ ๋ณด๊ณ ํ
์คํธ ๊ฐ๋ฅ
๐ ํด๋ผ์ด์ธํธ ๊ตฌ์กฐ ๋ณ๊ฒฝ์๋ ์ง์ฅ์ด ์์
ํ์ํ ๋ฐ์ดํฐ๋ฅผ ๊ฒฐ์ ํ๊ณ ๋ฐ๋ ์ฃผ์ฒด๊ฐ ํด๋ผ์ด์ธํธ์ด๊ธฐ ๋๋ฌธ์ ์๋ฒ์ ์ง์ฅ์ด ์์
ํด๋ผ์ด์ธํธ์์๋ ๋ฌด์จ ๋ฐ์ดํฐ๊ฐ ํ์ํ ์ง์ ๋ํด์๋ง ์๊ตฌ์ฌํญ์ ์ฟผ๋ฆฌ๋ก ์์ฑ
๐ ํ์ต ์๊ฐ ํ์
REST API๊ฐ ์ต์ํ๋ค๋ฉด GraphQL๋ฅผ ํ์ตํ๋ ๋ฐ ์๊ฐ ํ์
๐ ์บ์ฑ์ด REST๋ณด๋ค ํจ์ฌ ๋ณต์กํจ
HTTP์์ ๊ฐ ๋ฉ์๋์ ๋ฐ๋ผ ์บ์ฑ์ด ๊ตฌํ,
GraphQL์์ POST ๋ฉ์๋๋ง์ ์ด์ฉํด ์์ฒญ์ ๋ณด๋ด๊ธฐ ๋๋ฌธ์
๊ฐ ๋ฉ์๋์ ๋ฐ๋ฅธ ์บ์ฑ ์ง์ ๋ถ๊ฐ
๐
Apollo ์์ง์ ์บ์ฑ๊ณผ ์์ ์ฟผ๋ฆฌ ๋ฑ์ผ๋ก ๋ณด์
๐ ๊ณ ์ ๋ ์์ฒญ๊ณผ ์๋ต์ ๊ฒฝ์ฐ ๋ถํ์
๊ณ ์ ๋ ์์ฒญ๊ณผ ์๋ต๋ง ํ์ํ ๊ฒฝ์ฐ์๋ Query ๋ก ์ธํด ์์ฒญ์ ํฌ๊ธฐ๊ฐ RESTful API ๋ณด๋ค ํผ
๐ Resource ์ ์์ ๋ฐ์ดํฐ ์์ฒญ
REST API Resource์ ๋ํ ํํ ์ ์์ ๋ฐ์ดํฐ ์์ฒญ ๋ฐฉ๋ฒ์ด ์ฐ๊ฒฐ
GraphQL Resource์ ๋ํ ํํ ์ ์์ ๋ฐ์ดํฐ ์์ฒญ์ด ์์ ํ ๋ถ๋ฆฌ
๐ Resource์ ๋ํ ๊ฒฐ์
REST API Resource์ ํฌ๊ธฐ์ ํํ๋ฅผ ์๋ฒ์์ ๊ฒฐ์
GraphQL Resource์ ๋ํ ์ ๋ณด๋ง ์ ์, ํ์ํ ํฌ๊ธฐ์ ํํ๋ ํด๋ผ์ด์ธํธ ๋จ์์ ์์ฒญ ์ ๊ฒฐ์
๐ Resource์ ์์
์ ํ
REST API URI๊ฐ Resource๋ฅผ ๋ํ๋ด๊ณ Method๊ฐ ์์
์ ์ ํ
GraphQL GraphQL Schema๊ฐ Resource๋ฅผ ๋ํ๋ด๊ณ Query, Mutation ํ์
์ด ์์
์ ์ ํ
๐ Resource์ ์์ฒญ ๋น๋
REST API ์ฌ๋ฌ Resource์ ์ ๊ทผํ๊ณ ์ ํ ๋ ์ฌ๋ฌ ๋ฒ์ ์์ฒญ์ด ํ์
GraphQL ํ๋ฒ์ ์์ฒญ์์ ์ฌ๋ฌ Resource์ ์ ๊ทผ ๊ฐ๋ฅ
๐ ์์
์ฒ๋ฆฌ
REST API ๊ฐ ์์ฒญ์ ํด๋น ์๋ํฌ์ธํธ์ ์ ์๋ ํธ๋ค๋ง ํจ์๋ฅผ ํธ์ถํ์ฌ ์์
์ ์ฒ๋ฆฌ
GraphQL ์์ฒญ ๋ฐ์ ๊ฐ ํ๋์ ๋ํ resolver๋ฅผ ํธ์ถํ์ฌ ์์
์ ์ฒ๋ฆฌ