๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

NODE/node.js

Nodejs_Day 01 :: express ๋ชจ๋“ˆ/๋ฉ”์†Œ๋“œ/ํฌ์ŠคํŠธ๋งจ/๋ผ์šฐํ„ฐ/ํ…œํ”Œ๋ฆฟ ์—”์ง„ ๋ชจ๋“ˆ

 

Express๋ชจ๋“ˆ ๐Ÿ’–

 

http ๋ชจ๋“ˆ๋งŒ ์‚ฌ์šฉํ•ด์„œ ์›น ์„œ๋ฒ„๋ฅผ ๊ตฌ์„ฑํ•˜๋ฉด ์ง์ ‘ ๋งŽ์€ ๊ธฐ๋Šฅ์„ ๊ฐœ๋ฐœํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๋งŒ๋“ค์–ด์ง„ ๋ชจ๋“ˆ์ด ์ต์Šคํ”„๋ ˆ์Šค ์ž…๋‹ˆ๋‹ค.

์ต์Šคํ”„๋ ˆ์Šค ๋ชจ๋“ˆ์„ ์‚ฌ์šฉํ•˜๋ฉด ๊ฐ„๋‹จํ•œ ์ฝ”๋“œ๋กœ ์›น ์„œ๋ฒ„์˜ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๊ณ , ๋ฏธ๋“ค์›จ์–ด์™€ ๋ผ์šฐํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํŽธ๋ฆฌํ•˜๊ฒŒ ์›น ์„œ๋ฒ„๋ฅผ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

๋ฏธ๋“ค์›จ์–ด : ์™ธ๋ถ€์—์„œ ๊ฐ€์ ธ์˜ค๋Š” ๋ชจ๋“ˆ (์ค‘๊ฐ„ ์ค‘๊ฐ„ ๊ปด์žˆ๋Š” ํ”„๋กœ๊ทธ๋žจ ๋ชจ๋“ˆ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.)

๋ผ์šฐํ„ฐ : ๋„๋ฉ”์ธ์„ ์‚ฌ์šฉ์ž๋“ค์—๊ฒŒ ์ค„ ์ˆ˜ ์žˆ๋„๋ก ๋งŒ๋“ค์–ด์ง„ ์นดํ…Œ๊ณ ๋ฆฌ ์ž…๋‹ˆ๋‹ค.

ex ) http://www.naver.com/shopping ์ด๋Ÿฐ์‹์œผ๋กœ ๋’ค์— shopping ๊ฐ™์€ ์นดํ…Œ๊ณ ๋ฆฌ๋ฅผ ์˜๋ฏธ

 

๋จผ์ € ๋…ธ๋“œ ์„ธํŒ…๋ถ€ํ„ฐ ํ•ด์•ผ๋ฉ๋‹ˆ๋‹ค. ์ˆœ์„œ

>> ์ด ํ‘œ์‹œ ๋‹ค์Œ ๋‚ด์šฉ๋ฌผ์„ ํ„ฐ๋ฏธ๋„ ์ฐฝ์— ์ž…๋ ฅํ•˜๋ฉด ๋œ๋‹ค.

 

1. package.json ํŒŒ์ผ ์ƒ์„ฑ

- ์™ธ๋ถ€์—์„œ ๊ฐ€์ ธ์˜ค๋Š” ๋ชจ๋“ˆ์„ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด package.json์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

>> npm init -y ๋˜๋Š” npm i ๋งŒ ์ž…๋ ฅํ•ด๋„ package.json์ด ์„ค์น˜๋œ๋‹ค.

 

2. node_modules ํด๋” ์ƒ์„ฑ

- npm install express 

 

package.json ํŒŒ์ผ ์—ด์–ด๋ณด๋ฉด

"dependencies": {


    "express": "^4.17.1"
  }
์ด๋ ‡๊ฒŒ express ๊ฐ์ฒด๊ฐ€ ์ƒ์„ฑ๋œ๋‹ค.

 

------------------------------------------------------------------------------------------

 

๋ณ€์ˆ˜๋‚˜ ๋ชจ๋“ˆ ์„ ์–ธ์‹œ const ๋Š” ์ƒ์ˆ˜๋กœ ํ•œ๋ฒˆ ์ €์žฅํ•˜๋ฉด ๋ชป ๋ฐ”๊พผ๋‹ค๋Š” ๋œป

์˜ˆ์‹œ ) const port = 3000; ์ด๋Ÿฐ์‹

 

๋ฉ”์†Œ๋“œ ๐Ÿ’–

โœ” ๋ฉ”์†Œ๋“œ 

use() : ๋ฏธ๋“ค์›จ์–ด ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
get() : get์œผ๋กœ ์‚ฌ์šฉ์ž ์ •๋ณด๋ฅผ ์ „๋‹ฌ ๋ฐ›์Šต๋‹ˆ๋‹ค.
set() : ์„œ๋ฒ„ ์„ค์ •์„ ์œ„ํ•œ ์†์„ฑ์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.
redirect() : ์›น ํŽ˜์ด์ง€์˜ ๊ฒฝ๋กœ๋ฅผ ๊ฐ•์ œ๋กœ ์ด๋™์‹œํ‚ต๋‹ˆ๋‹ค. (๊ฐ•์ œ aํƒœ๊ทธ๊ฐ™์€๊ฑฐ)
send() : ํด๋ผ์ด์–ธํŠธ์— ์‘๋‹ต ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋ƒ…๋‹ˆ๋‹ค.

์ „๋‹ฌํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋Š” HTML ๋ฌธ์ž์—ด, Buffer๊ฐ์ฒด, Json๊ฐ์ฒด, json๋ฐฐ์—ด ๋“ฑ๋“ฑ
header() : ํ—ค๋”๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

โœ” express ์š”์ฒญ ๊ฐ์ฒด์— ์ถ”๊ฐ€๋œ ํ—ค๋”์™€ ํŒŒ๋ผ๋ฏธํ„ฐ
query : ํด๋ผ์ด์–ธํŠธ์—์„œ GET๋ฐฉ์‹์œผ๋กœ ์ „์†กํ•œ ์š”์ฒญ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
body :  ํด๋ผ์ด์–ธํŠธ์—์„œ POST๋ฐฉ์‹์œผ๋กœ ์ „์†กํ•œ ์š”์ฒญ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
(๋‹จ, body-parser์™€ ๊ฐ™์€ ๋ชจ๋“ˆ์„ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.)

 

------------------------------------------------------------------------------------------

 

POST๋งจ ๋‹ค์šด๋กœ๋“œ ๐Ÿ’–

 

www.postman.com/download

 

https://www.postman.com/download

 

www.postman.com

์—ฌ๊ธฐ์„œ POST๋งจ ๋‹ค์šด๋กœ๋“œ ํ•˜๋ฉด๋œ๋‹ค.

์™œ POST ๋งจ ์“ฐ๋ƒ๋ฉด PHP๋Š” ๊ผญ ํผ์œผ๋กœ POST๋ฅผ ์ „๋‹ฌ ํ•˜๋Š”๋ฐ

๋…ธ๋“œ๋Š” ์ด๊ฑฐ ์„ค์น˜ํ•˜๋ฉด ๊ตณ์ด ํผ์œผ๋กœ ์ „๋‹ฌ ํ•˜์ง€ ์•Š์•„๋„ ์ „๋‹ฌ๋œ๋‹ค.

์•„์ด๋””๋ž‘ ๋น„๋ฐ€๋ฒˆํ˜ธ๋Š” ๊ตฌ๊ธ€ ์—ฐ๋™๊ฐ€๋Šฅ

 

ํฌ์ŠคํŠธ๋งจ_์‚ฌ์šฉ๋ฒ•์ •๋ฆฌ.docx
0.28MB

 

------------------------------------------------------------------------------------------

 

๋ผ์šฐํ„ฐ์™€ ๋ฏธ๋“ค์›จ์–ด

- ํŽ˜์ด์ง€๋ฅผ ๊ตฌ๋ถ„ํ•ด์ค„ ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.

์‚ฌ์šฉ์ž์˜ ๋‹ค์–‘ํ•œ ์š”์ฒญ์ด ๋“ค์–ด์™”์„ ๋•Œ use() ๋ฉ”์†Œ๋“œ๋กœ ์„ค์ •ํ•œ ๋ฏธ๋“ค์›จ์–ด๊ฐ€ ํ•ญ์ƒ ํ˜ธ์ถœ๋˜๋Š” ๋ถˆํŽธํ•œ ์ ์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, ๊ทธ ๋ถˆํŽธ์„ ํ•ด๊ฒฐํ•˜๊ณ ์ž ์‚ฌ์šฉํ•˜๋Š” ๋ฏธ๋“ค์›จ์–ด๊ฐ€ Router ๋ฏธ๋“ค์›จ์–ด๋‹ค.

 

๋ผ์šฐํ„ฐ ๊ฐ์ฒด ๋งŒ๋“ค๊ธฐ

:: var ๋ผ์šฐํ„ฐ๊ฐ์ฒด๋ช… = express.Router();

๋ผ์šฐํ„ฐ๊ฐ์ฑ„๋ช….router(์š”์ฒญํŒจ์Šค).get(์‹คํ–‰ ํ•  ํ•จ์ˆ˜);

๋ผ์šฐํ„ฐ๊ฐ์ฑ„๋ช….router(์š”์ฒญํŒจ์Šค).post(์‹คํ–‰ ํ•  ํ•จ์ˆ˜);

 

------------------------------------------------------------------------------------------

 

ํ…œํ”Œ๋ฆฟ ์—”์ง„ ๋ชจ๋“ˆ ๐Ÿ’–

 

โœ” 1. EJS (Embedded JavaScript)

- EJS ๋ชจ๋“ˆ์€ ํ…œํ”Œ๋ฆฟ ์—”์ง„ ๋ชจ๋“ˆ์ž…๋‹ˆ๋‹ค.

ํ…œํ”Œ๋ฆฟ ์—”์ง„ ๋ชจ๋“ˆ์€ ํŠน์ •ํ•œ ํ˜•์‹์˜ ํŒŒ์ผ๋กœ๋ถ€ํ„ฐ HTML ํŽ˜์ด์ง€๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋ชจ๋“ˆ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

 

EJS ํŒŒ์ผ ํ˜•์‹์˜ ํŠน์ˆ˜ ํƒœ๊ทธ

<% ์ฝ”๋“œ %> : ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ฝ”๋“œ๋ฅผ ์ž…๋ ฅํ•˜๋Š” ์˜์—ญ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

<%= ๊ฐ’ %> : ๋ฐ์ดํ„ฐ๋ฅผ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.

 

EJS ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌ

- render() : ๋ฉ”์†Œ๋“œ์˜ ๋‘ ๋ฒˆ์งธ ๋งค๊ฐœ๋ณ€์ˆ˜์— ์ „๋‹ฌํ•˜๊ณ ์ž ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ž…๋ ฅํ•˜์—ฌ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค.

 

โœ” 2. PUG

 

PUG ๋ฌธ๋ฒ• 

jade-lang.com/api

 

API Documentation | Jade Language

This page details how to render jade using the JavaScript API in node.js Installation via npm: npm install jade Usage options All API methods take the following set of options: { filename: string – Used in exceptions, and required for relative includes a

jade-lang.com

>> npm install jade

๋กœ ์„ค์น˜ํ•œ๋‹ค.

 

PUG๋Š” ๋“ค์—ฌ์“ฐ๊ธฐ ์ž˜๋ชปํ•˜๋ฉด ์—๋Ÿฌ๋‚œ๋‹ค.

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์‚ฌ์šฉํ•˜๋ ค๋ฉด - (ํ•˜์ดํ”ˆ)์œผ๋กœ ์‹œ์ž‘ํ•ด์„œ ํ•˜์ดํ”ˆ์œผ๋กœ ๋๋‚˜์•ผํ•œ๋‹ค.

์ฃผ์„์„ ์“ธ ์ˆ˜ ์—†๋‹ค๋Š” ์ ์ด ๋˜ ๋‹จ์ ์ž„.

 

------------------------------------------------------------------------------------------

 

static ๋ฏธ๋“ค์›จ์–ด ๐Ÿ’–

- serve_static ๋ชจ๋“ˆ ์‚ฌ์šฉ

>> npm install serve-static

 

ํŠน์ • ํด๋”์˜ ํŒŒ์ผ๋“ค์„ ํŠน์ • ํŒจ์Šค๋กœ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋„๋ก ๋งŒ๋“ค์–ด ์ค๋‹ˆ๋‹ค.
์˜ˆ๋ฅผ ๋“ค์–ด public ํด๋”์— ์žˆ๋Š” ๋ชจ๋“  ํŒŒ์ผ์„ ์›น ์„œ๋ฒ„์— root ํŒจ์Šค๋กœ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋„๋ก ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

- ํ˜„์žฌ ๋””๋ ‰ํ† ๋ฆฌ๋กœ public ํด๋”๋ฅผ ๋งคํ•‘ํ•ด์ค€๋‹ค.

public(ํด๋”๋ช…) > images, wav, mp3(ํด๋”์•ˆ์— ๋‹ด๊ธด ํŒŒ์ผ๋“ค)

localhost:3000/public/apple.jpg --> localhost:3000/apple.jpg

์ด๋ ‡๊ฒŒ public์„ ์ƒ๋žตํ•˜๊ณ  ๋ฐ”๋กœ ํŒŒ์ผ๋ช…๋งŒ ์ž…๋ ฅํ•ด๋„ ๋‚˜์˜จ๋‹ค.

 

localhost:3000/public/login.html --> localhost:3000/login.html