- ๋จผ์ HTTP์ ๋ํ ์ดํด๊ฐ ์์ด์ผ ํ๋ค.(HTTP ์ ๋ฆฌ๊ธ)
API๋ฅผ ์ํ ์ฟผ๋ฆฌ ์ธ์ด(Query Language)์ด๋ฉฐ ํ์
์์คํ
์ ์ฌ์ฉํ์ฌ ์ฟผ๋ฆฌ๋ฅผ ์คํํ๋ ์๋ฒ์ฌ์ด๋ ๋ฐํ์์
๋๋ค.
ํน์ ํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ํน์ ํ ์คํ ๋ฆฌ์ง ์์ง๊ณผ ๊ด๊ณ๋์ด ์์ง ์์ผ๋ฉฐ ๊ธฐ์กด ์ฝ๋์ ๋ฐ์ดํฐ์ ์ํด ๋์ฒด๋ฉ๋๋ค.
- ์ฟผ๋ฆฌ ์ธ์ด(Query Language)
์ฟผ๋ฆฌ ์ธ์ด๋ ์ ๋ณด๋ฅผ ์ป๊ธฐ ์ํด ๋ณด๋ด๋ ์ง์๋ฌธ(Query)๋ฅผ ๋ง๋ค๊ธฐ ์ํด ์ฌ์ฉ๋๋ ์ปดํจํฐ ์ธ์ด์ด๋ค. ๊ฐ์ฅ ์ ์๋ ค์ ธ์๋ ์์๋ก๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์คํ ์ ์ ์ฅ๋ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๊ธฐ ์ํด ์ฌ์ฉํ๋ SQL์ด ์๋ค.
- GraphQL(Graph Query Language)
SQL์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์คํ ์ผ๋ก๋ถํฐ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๋ ๋ชฉ์ ์ ๊ฐ์ง๋ค๋ฉด, GraphQL์ ํด๋ผ์ด์ธํธ๊ฐ ๋ฐ์ดํฐ๋ฅผ ์๋ฒ๋ก๋ถํฐ ๊ฐ์ ธ์ค๋ ๊ฒ์ ๋ชฉ์ ์ผ๋ก ํ๋ค.
๋ณดํต ํ๋์ ์๋ํฌ์ธํธ๋ฅผ ๊ฐ์ง๋ค.
์์ฒญํ ๋ ์ฌ์ฉํ๋ ์ฟผ๋ฆฌ์ ๋ฐ๋ผ ๋ค๋ฅธ ์๋ต์ ๋ฐ์ ์ ์๋ค.
์ํ๋ ๋ฐ์ดํฐ(response)๋ง ๋ฐ์ ์ ์๊ธฐ ๋๋ฌธ์ ์๋ ๊ฐ์ ์ด ๋๋ค.
์๋ํฌ์ธํธ REST API๋ ๋ณดํต ์ฌ๋ฌ ์๋ํฌ์ธํธ๋ฅผ ๊ฐ์ง๋ฉฐ ๊ฐ๊ฐ์ ์๋ํฌ์ธํธ๊ฐ ๋์ผํ ์๋ต์ ๋ฐํํ๋ค. ํ์ง๋ง, GraphQL์ ๋ณดํต ํ๋์ ์๋ํฌ์ธํธ๋ง์ ์ฌ์ฉํ๋ฉฐ ์์ฒญํ๋ ์ฟผ๋ฆฌ์ ๋ฐ๋ผ ๋ค๋ฅธ ์๋ต์ ๋ฐํํ๋ ๋ฐฉ์์ด๋ค.
์์ ์ฌ์ง ์ฒ๋ผ REST-API CRUD์์ฒญ ํ๋ํ๋์ API๊ฐ ์์ฑ๋์์ด์ผ ํ๋ค.
GRAPHQL์ R์ QUERY๋ก CUD๋ MUTATUION์ผ๋ก ์์ฒญ๊ณผ ์๋ต์ด ๊ฐ๋ฅํ๋ค.
- โ๏ธ ์ค์ :
REST-API๋ ๋ถํ์ํ ๋ฐ์ดํฐ๋ฅผ ๋ค ๋ฐ์์ค๋ ๋ฐ๋ฉด, GRAPHQL์ ์ํ๋ ๋ฐ์ดํฐ๋ง ๊ณจ๋ผ์ ๋ฐ์ ์ ์๋ค.
express๋ NodeJS๋ฅผ ์ฌ์ฉํ์ฌ ์ฝ๊ฒ ์๋ฒ๋ฅผ ๊ตฌ์ฑํ ์ ์๊ฒ ๋ง๋ ํด๋์ค์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์งํฉ์ฒด
1. ํฐ๋ฏธ๋์ yarn init์ ์คํํํ packge.json์ ์์ฑํ๋ค.
2. ํฐ๋ฏธ๋์ yarn add express ๋ฅผ ๋ค์ด ๋ฐ์์ค๋ค.
3. packge.json ์์ dependencies(ํ์คํ ๋ฆฌ๋ชฉ๋ก(์ค์นํํ์ผ)){express: ๋ฒ์ } ์ด๋ผ๊ณ ๋์ค๋ฉด ์ค์น
๊ฐ ์ ์์ ์ผ๋ก ๋๊ฒ์ด๋ค.
4. node_module์ด๋ ํ์ผ์ด ์์ฑ๋๋ค. -> node_modules(์คํํ๊ธฐ ์ํด ํ์ํ๋ค) ์ญ์ ํด๋ ๋ฌด๋ฐฉ
(yarn install๋ก ๋ค์ ๋ค์ด)
5. github์ node_module์ ๊ฐ๋ฆฌ๊ณ ์ฌ๋ ค์ค๋ค -> ์ต์๋จ์ .gitignoer ํ์ผ์ ์์ฑ ํํ node_module์ ์์ฑ
6. gitignoer -> github ์ ์ฅํ ๋ ๋ฌด์ํ ํ์ผ์ ์์ฑํ๋ค.
7. packge.json์ ์ ๋!! ์ญ์ ํ๋ฉด ์๋๋ค.
// const express = require('express'); // ์๋ ๋ฐฉ์ => commonjs
import express from 'express'; // ์์ฆ๋ฐฉ์ => module
const app = express();
const port = 3000; // ํฌํธ๋ฒํธ
app.get('/qqq', function (req, res) {
// ๋ฏธ๋ค์จ์ด ํจ์ (๊ฒฝ๋ก๋ฅผ ์๋ ค์ค๋ค.)
res.send('Hello World');
});
app.listen(port, () => {
console.log('๐ถ ๋ฐฑ์๋ API ์๋ฒ๊ฐ ์ผ์ก์ด์!!');
});
๋ด ์ปดํจํฐ ์ฃผ์๋ localhost ๋๋ 127.0.0.1์ด๋ค
์ด๋ ๊ฒ ํ๊ณ ๋๋ฉด ์๋์๊ฐ์ด ์ ์ญ์ ์ผ๋ก ์๋ํ๋ ๊ฒ์ ์์ ์๋ค.