๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
์‹œ๋„/Code-States

[D+73] ํŽธ๋ฆฌํ•œ Express (feat. ๋ฏธ๋“ค์›จ์–ด)

by ๐Ÿ‡๋ฐ•๋ด‰๋ด‰๐Ÿ‡ 2020. 12. 30.

 

 

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๊ด€๋ จ ์‚ฌํ•ญ๋“ค์„ ์ผ์ผํžˆ ์ ์„ ํ•„์š”๊ฐ€ ์—†๋‹ค.

 

 

 

 

๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€