-
Rest-API&Graphql-APIReact 2023. 4. 24. 22:37
๐ GRAPHQL
- GraphQL: Server API๋ฅผ ๊ตฌ์ฑํ๊ธฐ ์ํด Facebook์์ ๋ง๋ ์ฟผ๋ฆฌ ์ธ์ด์ด๋ค.
- ์ฟผ๋ฆฌ์ธ์ด: ์ ๋ณด๋ฅผ ์ป๊ธฐ ์ํด ๋ณด๋ด๋ ์ง์๋ฌธ(Query)๋ฅผ ๋ง๋ค๊ธฐ ์ํด ์ฌ์ฉ๋๋ ์ปดํจํฐ ์ธ์ด์ด๋ค. ๊ฐ์ฅ ์ ์๋ ค์ ธ์๋ ์์๋ก๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์คํ ์ ์ ์ฅ๋ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๊ธฐ ์ํด ์ฌ์ฉํ๋ SQL์ด ์๋ค.
๐ REST VS GRAPHQL
- Graphql-API๋ ๋ณดํต ํ๋์ ์๋ํฌ์ธํธ๋ฅผ ๊ฐ์ง๋ค.
- Graphql-API๋ ๋ฐฑ์๋๋ก ์์ฒญ์ ์ํ๋ ๋ฐ์ดํฐ ๊ฐ์ ์๋ต ๋ฐ์ ์ ์์ด ํจ์จ์ ์ธ ํต์ ์ ํ ์ ์๋ค.
- Rest-API๋ Graphql๊ณผ ๋ค๋ฅธ๊ฒ ์ํ๋ ๋ฐ์ดํฐ ๊ฐ ๋ณด๋ค๋ ์ ์ฒด ๋ฐ์ดํฐ๋ฅผ ๋ฐ์์จ๋ค.
* ํ๋์ ์๋ํฌ์ธํธ
REST API๋ ๋ณดํต ์ฌ๋ฌ ์๋ํฌ์ธํธ๋ฅผ ๊ฐ์ง๋ฉฐ ๊ฐ๊ฐ์ ์๋ํฌ์ธํธ๊ฐ ๋์ผํ ์๋ต์ ๋ฐํํ๋ค. ํ์ง๋ง GraphQL์ ๋ณดํต ํ๋์ ์๋ํฌ์ธํธ๋ง์ ์ฌ์ฉํ๋ฉฐ ์์ฒญํ๋ ์ฟผ๋ฆฌ์ ๋ฐ๋ผ ๋ค๋ฅธ ์๋ต์ ๋ฐํํ๋ ๋ฐฉ์์ด๋ค.
ํ๊ต์ ๋ฐ, ํ์์ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์์ค๋ ์์๋ก ๋์ ์ฐจ์ด์ ์ ํ์ธํด๋ณด์.
EX)
REST API → example.com/class → example.com/class/(๋ฐ index) → example.com/class/(๋ฐ index)/students → example.com/class/(๋ฐ index)/students/(ํ์ index) GraphQL → example.com (ํ๋์ ์๋ํฌ์ธํธ์ ๋ค๋ฅธ ์ฟผ๋ฆฌ๋ฅผ ์ฌ์ฉํด ์์ฒญ)
REST API์ ๊ฒฝ์ฐ ๋ฐ์ ์ํด์๋ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๋๋ฐ์ ์๋ต๋ง๋ค ๋ค์ํ ์๋ํฌ์ธํธ๋ฅผ ๊ฐ์ง๊ฒ ๋๋ค. ํ์ง๋ง GraphQL์ ํ๋์ ์๋ํฌ์ธํธ (Root Endpoint)์ ๋ค๋ฅธ ์ฟผ๋ฆฌ๋ก ์์ฒญํจ์ผ๋ก์จ ๋ค๋ฅธ ์๋ต์ ๋ฐ์ ์ ์๋ค.
์๋ํฌ์ธํธ๊ฐ ๋ง์์ง ๊ฒฝ์ฐ ๊ด๋ฆฌํ๊ธฐ ํ๋ค ๋ฟ๋๋ฌ, ๋ง์ ์๋ํฌ์ธํธ์ ๋ ธ์ถ์ ๋ง๊ธฐ์ํด ์ถ๊ฐ์ ์ธ ์ฒ๋ฆฌ๊ฐ ํ์ ํ ์ ์๋ค.
๐ C(reate)R(read)U(date)D(elete)
โ๏ธ AXIOS
C : ์์ฑํ๋ API => POST
ex)
const reulst = axios.post(API ์ด๋ฆ)
R : ์กฐํํ๋ API => GET
const result = axios.get(API ์ด๋ฆ)
U : ์์ ํ๋ API => PUT
const result = axios.put(API ์ด๋ฆ)
D : ์ญ์ ํ๋ API => DELETE
const result = axios.delete(API ์ด๋ฆ)
โ๏ธ Graphql
C : ์์ฑํ๋ API => Mutation
R : ์กฐํํ๋ API => Query
U : ์์ ํ๋ API => Mutation
D : ์ญ์ ํ๋ API => Mutation
ex)
const result = useMuation(API ์ด๋ฆ) const result = useQuery(API ์ด๋ฆ)
์ฐธ๊ณ ๋ฌธ์: https://jongminfire.dev/graph-ql%EC%9D%B4%EB%9E%80
GraphQL์ด๋?
๊ฐ๋ฐ์๋ค์ Server API๋ฅผ ์ฌ์ฉํด์ ํด๋ผ์ด์ธํธ์ ์๋ฒ์ ํต์ ์ ๊ตฌํํ๋ค. Server API๋ฅผ ๊ฐ๋ฐํ๋ ๋ฐฉ๋ฒ ์ค ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ๋๋ ๋ฐฉ์์ REST ์ GraphQL ์ด๋ค. GraphQL์ด๋ ๋ฌด์์ด๋ฉฐ REST…
jongminfire.dev