API(Application Programming Interface)๋ ํ๋ก๊ทธ๋จ๋ผ๋ฆฌ ์๋ก ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์ ์ ์๊ฒ ํด์ฃผ๋ ์ฝ์์ด๋ค. ์ฑ์์ ๋ฒํผ์ ๋๋ฅด๋ฉด ์๋ฒ์ ์์ฒญ์ ๋ณด๋ด๊ณ , ์๋ฒ๊ฐ ํ์ํ ์ ๋ณด๋ฅผ ๋ณด๋ด์ฃผ๋ ๊ณผ์ ์ด ๋ฐ๋ก API๋ฅผ ํตํด ์ด๋ฃจ์ด์ง๋ค.
ํ๋ก๊ทธ๋จ๋ผ๋ฆฌ ์ฝ๊ฒ ์ฐ๊ฒฐํ ์ ์๋ค
API ๋๋ถ์ ์๋ก ๋ค๋ฅธ ์์คํ
์ด๋ ์๋น์ค๊ฐ ๋น ๋ฅด๊ณ ์ฝ๊ฒ ํต์ ํ ์ ์๋ค.
๊ฐ๋ฐ ์๊ฐ์ ์ค์ฌ์ค๋ค
ํ์ํ ๊ธฐ๋ฅ์ ์ง์ ๋ง๋ค ํ์ ์์ด, ์ด๋ฏธ ๋ง๋ค์ด์ง API๋ฅผ ๊ฐ์ ธ๋ค ์ฐ๋ฉด ๋๋ค.
์๋น์ค ํ์ฅ์ ์ ๋ฆฌํ๋ค
๋ด ์๋น์ค๋ฅผ ์ธ๋ถ์ ๊ณต๊ฐํ๋ฉด, ๋ค๋ฅธ ์ฌ๋๋ค์ด API๋ฅผ ์ด์ฉํด ์๋ก์ด ์ฑ์ด๋ ๊ธฐ๋ฅ์ ๋ง๋ค ์ ์๋ค.
์ผ๊ด์ฑ๊ณผ ๋ณด์ ์ ์ง
์ ํด์ง ๊ท์น์ ๋ฐ๋ผ ํต์ ํ๊ธฐ ๋๋ฌธ์, ์์คํ
์ด ์ปค์ ธ๋ ๊ด๋ฆฌ๊ฐ ์ฝ๊ณ ๋ณด์๋ ๊ฐํํ ์ ์๋ค.
API ์ข ๋ฅ์๋ ๋ํ์ ์ผ๋ก REST API์ GraphQL์ด ์๋ค.
REST API(Representational State Transfer)๋ ๋ํ์ ์ธ API์ด๋ค. ์น์ ๊ธฐ๋ณธ ์์น์ ๋ฐ๋ฅด๋ฉฐ, ํด๋ผ์ด์ธํธ์ ์๋ฒ๊ฐ HTTP๋ฅผ ํตํด ๋ฆฌ์์ค(๋ฐ์ดํฐ)๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ๋ฐฉ์์ด๋ค.
๋ฆฌ์์ค (Resource)
โข ๋ฆฌ์์ค๋ ์๋ฒ์ ์กด์ฌํ๋ ๋ชจ๋ ๋ฐ์ดํฐ(๊ฐ์ฒด)์ด๋ค.
โข ๋ฆฌ์์ค๋ ๊ฐ๊ฐ ๊ณ ์ ํ URI๋ก ์๋ณ๋๋ค.
HTTP ๋ฉ์๋
REST์์๋ HTTP ๋ฉ์๋๋ฅผ ํตํด ๋ฆฌ์์ค์ ๋ํ ํ๋(Action)์ ๊ตฌ๋ถํ๋ค.
โข GET: ๋ฆฌ์์ค ์กฐํ
โข POST: ๋ฆฌ์์ค ์์ฑ
โข PUT: ๋ฆฌ์์ค ์ ์ฒด ์์
โข PATCH: ๋ฆฌ์์ค ๋ถ๋ถ ์์
โข DELETE: ๋ฆฌ์์ค ์ญ์
URI(Uniform Resource Identifier)
โข ๋ฆฌ์์ค๋ URI๋ก ์ ๊ทผํ๋ค.
โข URI๋ ๋ฆฌ์์ค๋ฅผ โ๋ฌด์โ์ธ์ง๋ง ๋ํ๋ด์ผ ํ๊ณ , โ๋ฌด์จ ํ๋โ์ ํ๋์ง๋ ๋ฉ์๋๋ก ๊ตฌ๋ถํ๋ค.
ํํ(Representation)
โข ๋ฆฌ์์ค ์์ฒด๊ฐ ์๋, ๋ฆฌ์์ค๋ฅผ ํํํ๋ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๋๋ค.
โข ๋จ์ & ์ง๊ด์
URL๊ณผ ๋ฉ์๋๋ง ์ ์๋ฉด ์ฝ๊ฒ ์ฌ์ฉํ ์ ์๋ค.
โข ํ์ฅ์ฑ & ์ ์ฐ์ฑ
์๋ก์ด ๊ธฐ๋ฅ์ ์ถ๊ฐํด๋ ๊ตฌ์กฐ๋ฅผ ํฌ๊ฒ ๋ณ๊ฒฝํ ํ์๊ฐ ์๋ค.
โข ํ์ค HTTP ์ฌ์ฉ
๋ธ๋ผ์ฐ์ , ์๋ฒ, ์ฑ ์ด๋์๋ ์ฝ๊ฒ ๊ตฌํ ๊ฐ๋ฅํ๋ค.
โข ์บ์ฑ ๊ฐ๋ฅ
์บ์ฑ์ด๋ ์์ฃผ ์ฌ์ฉํ๋ ๋ฐ์ดํฐ๋ฅผ ๋น ๋ฅด๊ฒ ๊บผ๋ด ์ฐ๊ธฐ ์ํด ์์๋ก ์ ์ฅํด๋๋ ๊ฒ์ด๋ค. HTTP ์บ์๋ฅผ ํตํ GET ์์ฒญ์ ์ฑ๋ฅ์ ์ต์ ํํ ์ ์๋ค.
๋ณต์กํ ๋ฐ์ดํฐ ์์ฒญ์ด ํ์ํ ๊ฒฝ์ฐ ์ฌ๋ฌ ๋ฒ ์์ฒญํด์ผ ํ ์๋ ์๋ค. ๋ํ, ๊ณ ์ ๋ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ก ์ธํด ํด๋ผ์ด์ธํธ๊ฐ ์ํ์ง ์๋ ๋ฐ์ดํฐ๊น์ง ๋ฐ์ ์ ์๋ค.
์ด๋ฌํ ํ๊ณ๋ฅผ ๊ทน๋ณตํ๊ธฐ ์ํด GraphQL ๊ฐ์ ๋ฐฉ์์ด ๋ฑ์ฅํ๋ค.
Query: ์๋ฒ์๊ฒ ์ด๋ค ๋ฐ์ดํฐ๋ฅผ ๋ฌ๋ผ๊ณ ์์ฒญํ๋ ๋ฌธ์์ด๋ค.
Mutation: ๋ฐ์ดํฐ๋ฅผ ์์ , ์ถ๊ฐ, ์ญ์ ํ ๋ ์ฌ์ฉํ๋ค.
Subscription: ์๋ฒ์์ ํด๋ผ์ด์ธํธ๋ก ์ค์๊ฐ ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ด์ฃผ๋ ๊ธฐ๋ฅ์ด๋ค.
๋ ํ๋ ์ค์ํ ๊ฑด, GraphQL ์๋ฒ๋ ํญ์ Schema(์คํค๋ง)๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์๋ํ๋ค๋ ๊ฒ์ด๋ค. Schema(์คํค๋ง)๋ ์๋ฒ์ ์กด์ฌํ๋ ๋ฐ์ดํฐ๊ฐ ๋ฌด์์ด๋ฉฐ, ์ด๋ค ๋ชจ์(๊ตฌ์กฐ)์ด๊ณ , ์๋ก ์ด๋ป๊ฒ ์ฐ๊ฒฐ๋์ด ์๋์ง๋ฅผ ๋ช ํํ ์ ์ํ ๋ฌธ์์ด๋ค. GraphQL์์๋ ์ด ์คํค๋ง๊ฐ ์ด๋ค ์ฟผ๋ฆฌ(Query), ๋ฐ์ดํฐ ํ์ (Type), ๊ด๊ณ(Relationship), ์์ (Mutation)์ด ๊ฐ๋ฅํ์ง๋ฅผ ๋ชจ๋ ๊ฒฐ์ ํ๊ธฐ ๋๋ฌธ์ ์คํค๋ง๋ฅผ ๋ณด๋ฉด, ์ด ์๋ฒ์ ์ด๋ค ๋ฐ์ดํฐ๋ฅผ ์ด๋ป๊ฒ ์์ฒญํ ์ ์์์ง ํ๋์ ์ ์ ์๋ค.
โข ํ์ํ ๋ฐ์ดํฐ๋ง ์์ฒญํ๋ ๋คํธ์ํฌ ๋ญ๋น๊ฐ ์๋ค.
โข ํ๋์ ์์ฒญ์ผ๋ก ์ฌ๋ฌ ๋ฐ์ดํฐ ์งํฉ์ ๋ฐ์ ์ ์๋ค.
โข API ๋ฒ์ ๊ด๋ฆฌ๊ฐ ํ์ ์๋ค.
โข ์คํค๋ง ๊ธฐ๋ฐ์ด๊ธฐ ๋๋ฌธ์ ๋ฌธ์ํ๊ฐ ์๋์ผ๋ก ๊ฐ๋ฅํ๋ค.
โข ์คํค๋ง ์์ฑ, ๋ฆฌ์กธ๋ฒ ์ค์ ๋ฑ์ผ๋ก ์ธํ ์๋ฒ ๊ฐ๋ฐ์ด ๋ณต์กํ ์ ์๋ค.
โข ์บ์ฑ์ด REST๋ณด๋ค ๊น๋ค๋กญ๋ค.
โข ๊ฐ๋จํ API๋ผ๋ฉด ์คํ๋ ค ๊ณผํ ๋๋์ด ๋ค ์๋ ์๋ค.
API ... ๊ณง ์์ผ๋ฉด ์ ํฌ๊ฐ ํด๋ด์ผ ํ๋ ๊ฑฐ๊ฒ ์ฃ .. ํ์ ์คํฐ๋ ํ๋ฉด์ API๋ฅผ ์ผ๋ฐฑ๋ฒ ์ ๋ ๋ค์ ๊ฑฐ ๊ฐ์๋ฐ ์์ง ์ ์๊ฒ ์๋ฟ์ง ์๋ ใ .ใ ํ๋ก์ ํธ ์งํํ๋ฉด์ API๋ฅผ ์๋ฒฝ ์ดํดํ๊ตฌ ์ด ๊ธ์ ๋ค์ ์ฝ์ด๋ดค์ ๋ ์ด๋์ ๋ ์ํํด๋ผ ์ ์์์ผ๋ฉด , , ์ข์ ๊ธ ์๋ดค์ด์ฉ S2
๋๋ถ์ GraphQL์ ๋ํด ์์๋ณผ ์ ์์์ด์!