[Node.js] express (1) - basic / SPRINT ๐Ÿ’ฏ๏ธ

jungeundelilahLEEยท2020๋…„ 12์›” 30์ผ
0

Node.js

๋ชฉ๋ก ๋ณด๊ธฐ
15/27

goal

  • ๊ธฐ๋ณธ ๋‚ด์žฅ node.js ๋ชจ๋“ˆ(http ๋ชจ๋“ˆ)๋กœ ์ž‘์„ฑํ–ˆ๋˜ http ์„œ๋ฒ„๋ฅผ โžก๏ธ express ์„œ๋ฒ„ ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ํ†ตํ•ด์„œ ๋ฆฌํŒฉํ† ๋ง ํ•œ๋‹ค.
    • ๋ฆฌํŒฉํ† ๋ง : ์™ธ๋ถ€๋™์ž‘์„ ๋ฐ”๊พธ์ง€ ์•Š์œผ๋ฉด์„œ ๋‚ด๋ถ€ ๊ตฌ์กฐ๋ฅผ ๊ฐœ์„ ํ•˜๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ, ์†Œํ”„ํŠธ์›จ์–ด ์‹œ์Šคํ…œ์„ ๋ณ€๊ฒฝํ•˜๋Š” ํ”„๋กœ์„ธ์Šค์ด๋‹ค. ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ๋ณด๋‹ค ์ดํ•ดํ•˜๊ธฐ ์‰ฝ๊ณ , ์ˆ˜์ •ํ•˜๊ธฐ ์‰ฝ๋„๋ก ๋งŒ๋“œ๋Š” ๊ฒƒ, ๊ฒ‰์œผ๋กœ ๋ณด์ด๋Š” ์†Œํ”„ํŠธ์›จ์–ด์˜ ๊ธฐ๋Šฅ์„ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ด๋‹ค.

express

express ํ”„๋ ˆ์ž„์›Œํฌ๋ž€? ๐Ÿ’ฏ๏ธ

  • ์ •์˜ : Node.js๋ฅผ ์œ„ํ•œ ๋น ๋ฅด๊ณ  ๊ฐœ๋ฐฉ์ ์ธ ๊ฐ„๊ฒฐํ•œ ์›น ํ”„๋ ˆ์ž„์›Œํฌ (์ข‹์€ ๋ง์€ ๋‹ค ์จ๋†จ๋„ค ใ…Žใ…Ž) / Node.js ํ™˜๊ฒฝ์—์„œ ์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ or API๋ฅผ ์ œ์ž‘ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋Š” ์ธ๊ธฐ์žˆ๋Š” ํ”„๋ ˆ์ž„์›Œํฌ

  • ์‹œ์ž‘ : npm install express --save

  • ํŠน์ง•

    1. ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜
      Express๋Š” ์›น ๋ฐ ๋ชจ๋ฐ”์ผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์œ„ํ•œ ์ผ๋ จ์˜ ๊ฐ•๋ ฅํ•œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š” ๊ฐ„๊ฒฐํ•˜๊ณ  ์œ ์—ฐํ•œ Node.js ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ”„๋ ˆ์ž„์›Œํฌ์ž…๋‹ˆ๋‹ค.
    2. API
      ์ž์œ ๋กญ๊ฒŒ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ˆ˜๋งŽ์€ HTTP ์œ ํ‹ธ๋ฆฌํ‹ฐ ๋ฉ”์†Œ๋“œ ๋ฐ ๋ฏธ๋“ค์›จ์–ด๋ฅผ ํ†ตํ•ด ์‰ฝ๊ณ  ๋น ๋ฅด๊ฒŒ ๊ฐ•๋ ฅํ•œ API๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    3. ์„ฑ๋Šฅ
      Express๋Š” ๊ธฐ๋ณธ์ ์ธ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ธฐ๋Šฅ์œผ๋กœ ๊ตฌ์„ฑ๋œ ์–‡์€ ๊ณ„์ธต์„ ์ œ๊ณตํ•˜์—ฌ, ์—ฌ๋Ÿฌ๋ถ„์ด ์•Œ๊ณ  ์žˆ๊ณ  ์„ ํ˜ธํ•˜๋Š” Node.js ๊ธฐ๋Šฅ์„ ๋ชจํ˜ธํ•˜๊ฒŒ ๋งŒ๋“ค์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
    4. Frameworks
      ๋งŽ์€ ์œ ๋ช…ํ•œ ํ”„๋ ˆ์ž„์›Œํฌ๋“ค์ด Express๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๊ธฐ์กด http๋ชจ๋“ˆ๊ณผ์˜ ์ฐจ์ด์ 

    1. ๋ฏธ๋“ค์›จ์–ด๋ฅผ ๋ถ™์ด๊ธฐ ์‰ฝ๋‹ค.
    2. ์ž์ฒด ๋ผ์šฐํ„ฐ๋ฅผ ์ œ๊ณตํ•œ๋‹ค.



express ์‚ฌ์šฉ basic ๐Ÿ’ฏ๏ธ

express()

const express = require("express")
const app = express() 
// ๐Ÿ‘‡๏ธ
// express๋Š” ํ•จ์ˆ˜ // ์ด ํ•จ์ˆ˜ ๋ฆฌํ„ด๊ฐ’์„ ๋ณ€์ˆ˜app์— ๋‹ด๋Š”๋‹ค.
// application (์ดํ•˜ app) ์ด๋ผ๋Š” ๊ฐ์ฒด๊ฐ€ ๋‹ด๊ฒจ์žˆ๋‹ค.
// app ๊ฐ์ฒด๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ Express ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋‚˜ํƒ€๋‚ธ๋‹ค.
// Express ๋ชจ๋“ˆ์—์„œ ๋‚ด๋ณด๋‚ธ ์ตœ์ƒ์œ„ express() ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•ด์„œ ๋งŒ๋“ ๋‹ค.

ํฌํŠธ์„ค์ •
๋ฏธ๋“ค์›จ์–ด์‚ฌ์šฉ
๋ผ์šฐํ„ฐ
listen

Application

  • Application (์ดํ•˜ app) ๊ฐ์ฒด๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ Express ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋‚˜ํƒ€๋‚ธ๋‹ค. Express ๋ชจ๋“ˆ์—์„œ ๋‚ด๋ณด๋‚ธ ์ตœ์ƒ์œ„ express () ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ๋งŒ๋“ ๋‹ค.
var express = require('express')
var app = express()

app.get('/', function (req, res) {
  res.send('hello world')
})

app.listen(3000)

listen()

const port = 3000;

app.listen(port, () => {
  console.log(`์˜ˆ์ œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๋Œ๊ณ ์žˆ๋‹ค. ๋‹ค์Œ ์ฃผ์†Œ์—์„œ => http://localhost:${port}`)
})
// ๐Ÿ‘‡๏ธ
// listen๋ฉ”์†Œ๋“œ๋Š” ์ง€์ •๋œ host and port์—์„œ ์—ฐ๊ฒฐ์„ ๋ฐ”์ธ๋“œํ•˜๊ณ  ์ˆ˜์‹ ํ•œ๋‹ค.
// app.listen([port[, host[, backlog]]][, callback])
// ์ด ๋ฉ”์†Œ๋“œ๋Š” Node์˜ http.Server.listen()๊ณผ ๋™์ผํ•˜๋‹ค.

express๋ฅผ ์ด์šฉํ•œ SPRINT ๐Ÿ’ฏ๏ธ


const express = require("express")
const app = express()
const router = express.Router() 
  // ํ•ด๋‹น ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด, ๋ชจ๋“ˆ์‹ ๋งˆ์šดํŒ… ๊ฐ€๋Šฅํ•œ ํ•ธ๋“ค๋Ÿฌ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค
  // Router ์ธ์Šคํ„ด์Šค๋Š” ์™„์ „ํ•œ ๋ฏธ๋“ค์›จ์–ด์ด์ž ๋ผ์šฐํŒ… ์‹œ์Šคํ…œ
const bodyParser = require('body-parser') // json to parse
const jsonParser = bodyParser.json() // request์˜ body๋ถ€๋ถ„์„ ๊ฐ–๊ณ ์žˆ์Œ
const cors = require('cors') 
const port = 3000;
const ip = "127.0.0.1";

app.use(cors()) // ๋ชจ๋“  ์š”์ฒญ์— ๋Œ€ํ•ด CORS ํ—ˆ์šฉ
app.use(jsonParser) // โญ๏ธ์–˜๋ฅผ ์จ์ค€๋‹ค๊ณ  ๋ช…์‹œํ•ด์•ผ ํ•จ

const print = { results : [] }

app.post("/messages", (req, res, next) => {
  print.results.push(req.body)
  res.status(201).send(JSON.stringify(print))
})

app.get("/messages", (req, res, next) => {
  res.status(200).send(print)
})

module.exports = app.listen(port)

// ๋งค์šฐ ๊ฐ„๊ฒฐํ•ด์ง ! express์ตœ๊ณ  ! ๐Ÿ‘๏ธ
profile
delilah's journey

0๊ฐœ์˜ ๋Œ“๊ธ€