ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Node.js] Express๋ž€? (์ •์˜ ๋ฐ ์‚ฌ์šฉ๋ฒ•)
    ๐Ÿ“˜ Node.js 2024. 11. 7. 15:20

    โญ Express๋ž€?

    Express๋Š” Node.js์—์„œ ์‚ฌ์šฉํ•˜๋Š” ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ”„๋ ˆ์ž„์›Œํฌ์ž…๋‹ˆ๋‹ค.

    ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ๊ฐ„์˜ HTTP ์š”์ฒญ์„ ์‰ฝ๊ฒŒ ์ฒ˜๋ฆฌํ•˜๊ณ ,

    ๋น ๋ฅด๊ฒŒ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด๋‚˜ RESTful API ์„œ๋ฒ„๋ฅผ ๊ตฌ์ถ•ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ค๋‹ˆ๋‹ค.

     

    Express์—๋Š” ํฐ ํŠน์ง•์ด ๋‘๊ฐ€์ง€๊ฐ€ ์žˆ๋Š”๋ฐ์š”!

    ๋ฐ”๋กœ ๋ผ์šฐํŒ…๊ณผ ๋ฏธ๋“ค์›จ์–ด๋ฅผ ์ œ๊ณตํ•˜๋Š” ํ”„๋ ˆ์ž„์›Œํฌ๋ผ๋Š” ๊ฒƒ ์ž…๋‹ˆ๋‹ค.

    ๊ฐ„๋žตํ•˜๊ฒŒ ์„ค๋ช…ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

     

    Express์—์„œ ๋ผ์šฐํŒ…์ด๋ž€ ?

    Express๋Š” app.get(), app.post() ๋“ฑ๊ณผ ๊ฐ™์€ ๋ฉ”์„œ๋“œ๋ฅผ ํ†ตํ•ด URL ๊ฒฝ๋กœ์™€ HTTP ์š”์ฒญ ๋ฉ”์„œ๋“œ(GET, POST ๋“ฑ)์— ๋”ฐ๋ผ ์–ด๋–ค ๋™์ž‘์„ ์ˆ˜ํ–‰ํ• ์ง€ ์ •์˜ํ•  ์ˆ˜ ์žˆ๋Š” ๋ผ์šฐํŒ… ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

     

    ๋ผ์šฐํŒ… ์˜ˆ์ œ

    const express = require('express');
    const app = express();
    
    // GET ์š”์ฒญ => '/' (root) ๊ฒฝ๋กœ
    app.get('/', (req, res) => {
      res.send('Get์š”์ฒญ');
    });
    
    // POST ์š”์ฒญ ์ฒ˜๋ฆฌ: '/post' ๊ฒฝ๋กœ
    app.post('/post', (req, res) => {
      res.send('Post์š”์ฒญ');
    });
    
    // PUT ์š”์ฒญ ์ฒ˜๋ฆฌ: '/update' ๊ฒฝ๋กœ
    app.put('/update', (req, res) => {
      res.send('Put์š”์ฒญ');
    });
    
    // DELETE ์š”์ฒญ ์ฒ˜๋ฆฌ: '/delete' ๊ฒฝ๋กœ
    app.delete('/delete', (req, res) => {
      res.send('Delete์š”์ฒญ');
    });
    
    // ์„œ๋ฒ„ ์‹œ์ž‘
    app.listen(3000, () => {
      console.log('Server is running on http://localhost:3000');
    });

     

     

    Express์—์„œ ๋ฏธ๋“ค์›จ์–ด๋ž€ ?

    Express๋Š” ๋ฏธ๋“ค์›จ์–ด ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜์—ฌ ์š”์ฒญ์ด ์„œ๋ฒ„์— ๋„๋‹ฌํ•˜๊ฑฐ๋‚˜ ์‘๋‹ต์„ ๋ฐ˜ํ™˜ํ•˜๊ธฐ ์ „์— ํŠน์ • ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ๋ฏธ๋“ค์›จ์–ด๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ํŒŒ์‹ฑํ•˜๊ฑฐ๋‚˜, ์ธ์ฆ์„ ๊ด€๋ฆฌํ•˜๊ฑฐ๋‚˜, ๋กœ๊น… ๋“ฑ ์—ฌ๋Ÿฌ๊ฐ€์ง€ ์š”์ฒญ์— ๋Œ€ํ•ด์„œ ์ˆ˜ํ–‰์„ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์š”์ฒญ-์‘๋‹ต ํ๋ฆ„์„ ์„ธ๋ฐ€ํ•˜๊ฒŒ ์ œ์–ดํ•˜๊ณ , ์œ ์—ฐํ•œ ์„œ๋ฒ„ ๋™์ž‘์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

     

     

    Express๋ฅผ ๊ฐ„๋‹จํ•œ ์˜ˆ์ œ๋ฅผ ํ†ตํ•ด ์‹œ์ž‘ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

     

    1. ํ”„๋กœ์ ํŠธ ์ดˆ๊ธฐํ™” ( npm init )

     

    Node.js ํ”„๋กœ์ ํŠธ๋ฅผ ์ดˆ๊ธฐํ™”ํ•˜๋Š” ๋ช…๋ น์–ด์ž…๋‹ˆ๋‹ค.

    npm init ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ํ”„๋กœ์ ํŠธ์— ํ•„์š”ํ•œ ์„ค์ • ํŒŒ์ผ์ธ package.json ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค

     

    2. ๋ชจ๋“ˆ ์„ค์น˜ ( npm install express )

     

    npm i(install) express ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•ด express ๋ชจ๋“ˆ์„ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.

    ๋ชจ๋“ˆ์„ ์„ค์น˜ํ•œ ๋’ค, package.json์„ ๋ณด์‹œ๋ฉด ์œ„์™€ ๊ฐ™์ด ๋œฐ๊ฒ๋‹ˆ๋‹ค.

    express ๋ฒ„์ „์€ ํฌ์ŠคํŒ… ๋‚ ์งœ ๊ธฐ์ค€, 4.21.2 ๋ฒ„์ „์œผ๋กœ ์„ค์น˜๊ฐ€ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

     

    ๊ฐ„ํ˜น npm i express๋ฅผ ํ†ตํ•ด express ์„œ๋ฒ„๋ฅผ ์„ค์น˜ํ•œ๋‹ค๊ณ  ํ•˜๋Š”๋ฐ,

    ์—„๋ฐ€ํžˆ ๋งํ•˜๋ฉด express ์„œ๋ฒ„๋ฅผ ์„ค์น˜ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹Œ, express ์„œ๋ฒ„๋ฅผ ๊ตฌ์ถ•ํ•  ๋•Œ ํ•„์š”ํ•œ ๋ชจ๋“ˆ์„ ์„ค์น˜ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค! 

    ์ด๋Ÿฐ ์‚ฌ์†Œํ•œ ๊ฒƒ ํ•˜๋‚˜ํ•˜๋‚˜๊ฐ€ ์†Œ์ค‘ํ•œ ์ž์‚ฐ์ด ๋ ๊ฑฐ๋ผ ์ƒ๊ฐํ•˜๊ณ  ์ ์–ด๋ณด์•˜์Šต๋‹ˆ๋‹ค...๐Ÿ˜…

     

    ์ถ”๊ฐ€๋กœ 

    "scripts": {
        "test": "echo \"Error: no test specified\" && exit 1"
      },

    ์ด ๋ถ€๋ถ„์€, npm run test ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜๋ฉด "Error: no test specified"๋ผ๋Š” ๋ฉ”์‹œ์ง€๊ฐ€ ์ถœ๋ ฅ๋˜๋ฉฐ,

    ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ข…๋ฃŒ ์ฝ”๋“œ 1๋กœ ์ข…๋ฃŒ๋จ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

    ํ…Œ์ŠคํŠธ ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์•„์ง ์ •์˜๋˜์ง€ ์•Š์•˜์Œ์„ ๋‚˜ํƒ€๋‚ด๋Š” ์šฉ๋„๋กœ ์‚ฌ์šฉ๋˜๋Š” ๊ฒƒ์ด๋‹ˆ,

    ๋‹น์žฅ ์ค‘์š”ํ•œ๊ฑด ์•„๋‹™๋‹ˆ๋‹ค.

     

    3. ์‹คํ–‰ ํŒŒ์ผ ๋งŒ๋“ค๊ธฐ ( app.js )

     

    app.js ํŒŒ์ผ์„ ๋งŒ๋“ค์–ด์ค๋‹ˆ๋‹ค.

    ์šฐ๋ฆฌ๋Š” ์—ฌ๊ธฐ์— Express ๋ชจ๋“ˆ์„ ๋ถˆ๋Ÿฌ์˜ค๊ณ , Express ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•˜๊ณ , ํฌํŠธ ์„ค์ • ๋ฐ ๋ผ์šฐํŒ… ์ •์˜ ๋“ฑ์„ ํ•˜๊ณ 

    ์ตœ์ข…์ ์œผ๋กœ ์„œ๋ฒ„๋ฅผ ๊ตฌ๋™์‹œํ‚ฌ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

     

    const express = require("express"); // express ๋ชจ๋“ˆ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ
    const app = express(); // express ์ธ์Šคํ„ด์Šค ์ƒ์„ฑ
    const port = 5000; // ํฌํŠธ ์„ค์ •
    const now = new Date(); // Date ๊ฐ์ฒด ์ธ์Šคํ„ด์Šค ์ƒ์„ฑ
    
    app.get("/", async (req, res) => {
      console.log(
        "์‹คํ–‰๋˜์—ˆ์Šต๋‹ˆ๋‹ค. : ",
        `${
          now.getMonth() + 1
        }์›”${now.getDate()}์ผ ${now.getHours()}:${now.getMinutes()}:${now.getSeconds()}`
      );
      res.send(
        `${
          now.getMonth() + 1
        }์›”${now.getDate()}์ผ ${now.getHours()}:${now.getMinutes()}:${now.getSeconds()}`
      );
    });
    
    app.listen(port, () => {
      console.log("ํ˜„์žฌ์‹œ๊ฐ : ", now);
      console.log(`${port}๋ฒˆ ํฌํŠธ ๋Œ€๊ธฐ์ค‘...`);
    });

     

    ์ €์žฅ์„ ํ•˜๊ณ  node app.js๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.

     

    ์ด์ œ ๋ธŒ๋ผ์šฐ์ €์—์„œ ์‹ค์ œ๋กœ ํ˜ธ์ถœ์„ ํ•ด๋ณด๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

     

    res.send๋ฅผ ํ†ตํ•ด ๋ธŒ๋ผ์šฐ์ €์—, console.log๋ฅผ ํ†ตํ•ด ํ„ฐ๋ฏธ๋„์— ํ˜„์žฌ ์‹œ๊ฐ„์„ ๋„์› ์Šต๋‹ˆ๋‹ค.

     

     

    ๊ฐ„๋‹จํ•˜๊ฒŒ ๋™์ž‘์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด์•˜์Šต๋‹ˆ๋‹ค. ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค๐Ÿ˜‰

Designed by Tistory.