D+73
- ํธ๋ฆฌํ Express -
(feat. ๋ฏธ๋ค์จ์ด)
Express
• Express๋ Node.js ํ๊ฒฝ์์ ์น ์ดํ๋ฆฌ์ผ์ด์ ํน์ API๋ฅผ ์ ์ํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ ์ธ๊ธฐ์๋ ํ๋ ์ ์ํฌ
• ๊ธฐ์กด์ Node.js ํ์์ผ๋ก ์์ฑ๋ ์๋ฒ๋ฅผ Express๋ผ๋ ํ๋ ์ ์ํฌ๋ฅผ ํตํด์ ํจ์ฌ ์์ํ๊ฒ ์ฌ์ฉ์ด ๊ฐ๋ฅ
1 > Express ์ค์น
$ npm install express --save
์ต์คํ๋ ์ค๋ฅผ ์ฌ์ฉํ๊ธฐ ์ ์ ์ฐ์ ํฐ๋ฏธ๋ ์ฐฝ์ ์ด์ด ์ค์น๋ฅผ ์งํํด ์ค์ผ ํ๋ค.
2 > Express ์ฌ์ฉ
const express = require('express'); // express ๊ธฐ๋ณธ ๋ชจ๋
const app = express(); // express ๊ฐ์ฒด์์ฑ
const port = 3000; // ํฌํธ๋ฒํธ 3000
์ต์คํ๋ ์ค๋ฅผ ๋ณธ๊ฒฉ ์ฌ์ฉํ๊ธฐ ์ ์ ์ต์คํ๋ ์ค๊ฐ ํด๋น ๊ณต๊ฐ์์ ์ ์ฐ์ผ ์ ์๋๋ก
์๋จ์ ํ๊ฒฝ์ ๋ง๋ค์ด ์ค๋ค.
(= express๋ฅผ ์ฌ์ฉํ๋ค๊ณ ์๋ ค๋ผ)
3 > ๋ณธ๊ฒฉ Express ์ฌ์ฉํ๊ธฐ
•Node.js
// ๋ฉ์๋๊ฐ GET์ด๊ณ url์ด /messages์ผ ๊ฒฝ์ฐ
if(request.method === 'GET' && request.url === '/messages') {
response.writeHead(200, headers);
response.end(JSON.stringify(data));
}
// ๋ฉ์๋๊ฐ POST์ด๊ณ url์ด /messages์ผ ๊ฒฝ์ฐ
if(request.method === 'POST' && request.url === '/messages') {
let body = [];
request.on('data', chunk => {
body.push(chunk);
}).on('end', () => {
body = Buffer.concat(body).toString();
data.results.push(JSON.parse(body));
respose.writeHead(201, headers);
response.end(JSON.stringify(data));
})}
๊ธฐ์กด์ Node.js๋ฅผ ์ฌ์ฉํ์ ๊ฒฝ์ฐ, ์ฐ๋ฆฌ๋ ์กฐ๊ฑด๋ฌธ์ ์ฌ์ฉํ๊ณ ์๋ง์ ๊ฒ๋ค๊ณผ ํจ๊ป ์ฌ์ฉํด์ผ ํ๊ธฐ ๋๋ฌธ์
๋ฌธ์ ๋ฅผ ์ฝ๋์ ์์ด ๋ง์ ๋ฟ๋ง ์๋๋ผ ๊ฐ๋ ์ฑ์ด ์ข์ง ์์๋ค.
•Express.js
// ๋ฉ์๋๊ฐ GET์ด๊ณ url์ด /messages์ผ ๊ฒฝ์ฐ
app.get('/messages', (req, res) => {
res.status(200).send(JSON.stringify(data));
})
// ๋ฉ์๋๊ฐ POST์ด๊ณ url์ด /messages์ผ ๊ฒฝ์ฐ
app.post('/messages', (req, res) => {
data.results.push(req.body);
res.status(201).send();
ํ์ง๋ง ์ฌ๊ธฐ์ ์ฐ๋ฆฌ๋ ์ต์คํ๋ ์ค๋ฅผ ์ฌ์ฉํ ๊ฒฝ์ฐ ๋ฐ๋ก ๋ฉ์๋๋ฅผ app์์ ๋ฐ๋ก ์ฌ์ฉํ๊ณ ,
url๋ํ ์ด๋ ต์ง ์๊ฒ ์ฌ์ฉํ ์ ์์ ๋ฟ๋ง ์๋๋ผ ๊ธฐ์กด์ ๋ ธ๋์์๋ POST ๋ฉ์๋๋ฅผ ์ฌ์ฉํ ๋
body์ ๋ํ ์ ๋ณด๋ฅผ ํ์คํ ์ป์ด๋ด๊ธฐ ์ํด ์ฌ๋ก ๊ณต๊ฐ์ ๋ฃ์ ๋ค์ ๊ทธ ํ์ ํฉ์น๋ ๊ณผ์ ์ ๊ฑฐ์ณค๋๋ฐ
์ต์คํ๋ ์ค๋ ๋ ธ๋์ ๋นํด์ ๋จ์ํ ๋ฐฐ์ด์์ ๊ฐ์ ๋ฃ๋ ๋ฐฉ์์ผ๋ก ์ด๋ ต์ง ์๊ฒ ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋ค.
๋ฏธ๋ค์จ์ด
•๋ฏธ๋ค์จ์ด ํจ์๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์์ฒญ-์๋ต ์ฃผ๊ธฐ์์ ์์ฒญ๊ฐ์ฒด(req), ์๋ต๊ฐ์ฒด(res)๋ฐ ๋ฏธ๋ค์จ์ด ํจ์์ ์ ๊ทผ ํ ์ ์๋ ํจ์ ์๋ค.
const express = require('express'); // express ๊ธฐ๋ณธ ๋ชจ๋
const bodyParser = require('body-parser'); // body-parser ๋ฏธ๋ค์จ์ด
const jsonParser = bodyParser.json(); // body๋ฅผ jsonํ
const cors = require('cors'); // cors ๋ฏธ๋ค์จ์ด
const app = express(); // express ๊ฐ์ฒด์์ฑ
const port = 3000; // ํฌํธ๋ฒํธ 3000
app.use(cors()); // ์ ์ฒด์ ์ผ๋ก cors ์ฌ์ฉํ๊ธฐ
์ผ๋ถ ๋ฏธ๋ค์จ์ด๋ ํฐ๋ฏธ๋์ ๋ฐ๋ก ์ค์นํ์ง ์๊ณ ๋ฐ๋ก ์ฌ์ฉ์ด ๊ฐ๋ฅํ์ง๋ง ๋ณดํต์ ํฐ๋ฏธ๋์์ ์ค์น๋ฅผ ํตํด
๊ทธ ์ดํ์ ๋ฏธ๋ค์จ์ด ์ฌ์ฉ์ด ๊ฐ๋ฅํด ์ง๋ค.
์ด ๋ฏธ๋ค์จ์ด๋ฅผ ํตํด์ ์ฐ๋ฆฌ๋ ๊ธฐ์กด์ ๋ ธ๋์์ bodyParser๋ฅผ jsonํ ํ๊ธฐ ์ํด ์ฌ๋ฌ๊ณผ์ ์ ๊ฑฐ์น์ง ์์๋ ๋ ๋ฟ๋ง ์๋๋ผ,
cors ๋ฏธ๋ค์จ์ด๋ฅผ ํตํด ์์ cors๊ด๋ จ ์ฌํญ๋ค์ ์ผ์ผํ ์ ์ ํ์๊ฐ ์๋ค.
'์๋ > Code-States' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[D+75] React๋ฅผ ์ด์ฉํด ๊ฐ๋จํ ๋๊ธ์ฐฝ ๋ง๋ค๊ธฐ (0) | 2021.01.01 |
---|---|
[D+74] React์ ๋ํ ๋์ ์๊ฐ (0) | 2020.12.31 |
[D+72] ๋ด๊ฐ ์ดํดํ Node.js (0) | 2020.12.29 |
[D+71] Server & Node (0) | 2020.12.28 |
[D+70] Immersive 4์ฃผ์ฐจ (0) | 2020.12.27 |
๋๊ธ