250x250
Rainbow๐ŸŒˆCoder
My dev Note๐Ÿ“’
Rainbow๐ŸŒˆCoder
์ „์ฒด ๋ฐฉ๋ฌธ์ž
์˜ค๋Š˜
์–ด์ œ
  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (411)
    • ๊ณต์ง€์‚ฌํ•ญ (0)
    • Debugger (10)
      • Visual Studio Debugger (1)
      • Chrome DevTools (3)
      • Visual Studio Code Debugger (4)
      • eclipse (1)
      • intelliJ (1)
    • OOP (2)
      • OOP (2)
    • TypeScript (54)
      • ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ TypeScript (54)
    • Javascript (87)
      • Javascript (45)
      • Node.js (19)
      • React (5)
      • FE ๊ฐœ๋ฐœํ™˜๊ฒฝ์„ค์ • (3)
      • React์™€ Node ๊ฐ™์ด ๋•Œ๋ ค์žก๊ธฐ (6)
      • next.js (2)
      • pixi.js (7)
    • ๋งˆํฌ์—… (23)
      • Html & Css (23)
    • C# (80)
      • C# (12)
      • ์ด๊ฒƒ์ด C#์ด๋‹ค (68)
    • C++ (30)
      • c++ (27)
      • win api (3)
    • Unity (18)
      • Unity(๊ธฐ์ดˆ) (8)
      • Unity(C#์ค‘๊ธ‰) (5)
      • ์œ ๋‹ˆํ‹ฐ ํฌํ†ค(๋„คํŠธ์›Œํฌ) (4)
      • unity c# MyCode (1)
    • Java & Spring (29)
      • Java (11)
      • ์Šคํ”„๋ง (8)
      • Java Algorithm (9)
      • Javs Data Structures (1)
    • ์ž๋ฃŒ๊ตฌ์กฐ์™€ ์•Œ๊ณ ๋ฆฌ์ฆ˜ (15)
      • ์ž๋ฃŒ๊ตฌ์กฐ (5)
      • ์•Œ๊ณ ๋ฆฌ์ฆ˜ (10)
    • ํ˜•์ƒ๊ด€๋ฆฌ (15)
      • Git (11)
      • ์†Œ์ŠคํŠธ๋ฆฌ (3)
    • ๊ทธ๋ž˜ํ”ฝ์Šค (7)
      • WebGl (7)
    • AWS (3)
      • aws (3)
    • ๋ฆฌ๋ˆ…์Šค (5)
      • ๋ฆฌ๋ˆ…์Šค (5)
    • ์ฑ… ๋ฆฌ๋ทฐ (13)
      • ํด๋ฆฐ์ฝ”๋“œ(์ฑ…๋ฆฌ๋ทฐ) (3)
      • ์œ ์ง€๋ณด์ˆ˜๊ฐ€๋Šฅํ•œ์ฝ”๋”ฉ์˜๊ธฐ์ˆ C#ํŽธ(์ฑ…๋ฆฌ๋ทฐ) (1)
      • ๋ฆฌํŒฉํ† ๋ง(์ž๋ฐ”์Šคํฌ๋ฆฝํŠธํŒ) (9)
    • Server (2)
      • ๊ฒŒ์ž„ ์„œ๋ฒ„(๋„คํŠธ์›Œํฌ, ๋ฉ€ํ‹ฐ์“ฐ๋ ˆ๋“œ,OS) (2)
    • ์„ค๊ณ„, ์•„ํ‚คํ…์ณ (4)
    • ํŒŒ์ด์ฌ (5)
    • ๋””์ž์ธํŒจํ„ด (2)
    • mocha (2)
    • Jest (1)
    • Spine (1)
    • ์ธ๊ณต์ง€๋Šฅ (1)
      • ํ˜ผ์ž๊ณต๋ถ€ํ•˜๋Š”๋จธ์‹ ๋Ÿฌ๋‹+๋”ฅ๋Ÿฌ๋‹ (1)

๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

  • ํ™ˆ
  • ํƒœ๊ทธ
  • ๋ฐฉ๋ช…๋ก

๊ณต์ง€์‚ฌํ•ญ

์ธ๊ธฐ ๊ธ€

ํƒœ๊ทธ

  • ์ปดํฌ์ง€์…˜
  • MySQL
  • ใ…ฃใ„ท
  • ์œ„์ž„

์ตœ๊ทผ ๋Œ“๊ธ€

์ตœ๊ทผ ๊ธ€

ํ‹ฐ์Šคํ† ๋ฆฌ

hELLO ยท Designed By ์ •์ƒ์šฐ.
Rainbow๐ŸŒˆCoder

My dev Note๐Ÿ“’

[Node.js] (5) ์š”์ฒญ๊ณผ ์‘๋‹ต ์—ฐ๊ฒฐํ•˜๊ธฐ, ๋ฒ„ํผ ๊ฐœ๋… (๋ฆฌ๋””๋ ‰์…˜, ์œ ์ €์ž…๋ ฅ๊ฐ’ ํŒŒ์ผ์ƒ์„ฑ ํ›„ ์ €์žฅ)
Javascript/Node.js

[Node.js] (5) ์š”์ฒญ๊ณผ ์‘๋‹ต ์—ฐ๊ฒฐํ•˜๊ธฐ, ๋ฒ„ํผ ๊ฐœ๋… (๋ฆฌ๋””๋ ‰์…˜, ์œ ์ €์ž…๋ ฅ๊ฐ’ ํŒŒ์ผ์ƒ์„ฑ ํ›„ ์ €์žฅ)

2022. 11. 24. 14:44
728x90

(1)~(4)๊นŒ์ง€๋Š” ์„œ๋ฒ„๋ฅผ ์Šคํ•€ ์—…ํ•˜๋Š” ๋ฐฉ๋ฒ•๊ณผ, ๋“ค์–ด์˜ค๋Š” ์š”์ฒญ์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ๋‹ด์€ ์š”์ฒญ ๊ฐ์ฒด๋ฅผ ๋ฐ›๊ณ , ์‘๋‹ต์„ ๋Œ๋ ค์ค„ ์ˆ˜ ์žˆ๋Š” ์‘๋‹ต ๊ฐ์ฒด์— ๋Œ€ํ•œ ํฌ์ŠคํŒ…์„ ์ž‘์„ฑํ•˜์˜€๋‹ค.

 

ํ„ฐ๋ฏธ๋„
์„œ๋ฒ„ ์ข…๋ฃŒ  ctrl + c
์„œ๋ฒ„ ์žฌ์‹œ์ž‘ node app.js

 

1. ์‹ค์Šต์šฉ ์›น์„œ๋ฒ„ ์ฝ”๋“œ ์ž‘์„ฑ

 

์•„๋ž˜์™€ ๊ฐ™์ด ์ž…๋ ฅํ•ด์ค€๋‹ค.

 

const url = req.url;  url์ด ๋ญ”์ง€์— ๋”ฐ๋ผ์„œ ๋‹ค๋ฅธ ๋‚ด์šฉ์„ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ๋ณด๋‚ด์ฃผ๋„๋ก ํ•˜์ž.
if (url === '/') {

const http = require('http');

const server = http.createServer((req, res) => {
	const url = req.url;
	if (url === '/') {
		res.write('<html>');
		res.write('<head><title>My First Page</title></head>');
		res.write(
			'<body><form action="/message" method="POST"><input type="text" name="message"><button = "submit">Send</button></form></body>');
		res.write('</html>');
		return res.end();
	}
	res.setHeader('Content-Type', 'text/html');
	res.write('<html>');
	res.write('<head><title>My First Page</title></head>');
	res.write('<body><h1>Hello from my Node.js Server!</h1></body>');
	res.write('</html>');
	res.end('Hello Node'); //์ด ์‹œ์ ๋ถ€ํ„ฐ๋Š” ๋” ์ด์ƒ ์•„๋ฌด ๊ฒƒ๋„ ์ž…๋ ฅํ•ด์„œ๋Š” ์•ˆ๋จ
	//์ด ๋ถ€๋ถ„์€ ์šฐ๋ฆฌ๊ฐ€ ํด๋ผ์ด์–ธํŠธ๋กœ ๋‹ค์‹œ ์ „์†กํ•˜๋Š” ๋ถ€๋ถ„์œผ๋กœ, Node.js๊ฐ€ ํด๋ผ์ด์–ธํŠธ๋กœ ๋‹ค์‹œ ์ „์†กํ•˜๊ธฐ ๋•Œ๋ฌธ 
});

server.listen(3000);

 

 

์ฃผ์†Œ์ฐฝ์— http://localhost:3000/ ํ˜น์€ http://localhost:3000

 

์ฒซํ™”๋ฉด

 

์•„๋ฌด๊ฑฐ๋‚˜ ์ž…๋ ฅํ•˜๊ณ  Send๋ฅผ ํด๋ฆญ!

 

 

์œ„์—์„œ ๋ถ„๊ธฐ์ฒ˜๋ฆฌ๋ฅผ ๋” ๋Š˜๋ ค๋ณธ ์˜ˆ์ œ

const http = require('http');

const server = http.createServer((req, res) => {
	const url = req.url;
	if (url === '/') { //url์ด ์•„๋ฌด๋Ÿฐ ๊ฒฝ๋กœ๊ฐ€ ์—†๋‹ค๋ฉด,
		res.write('<html>');
		res.write('<head><title>My First Page</title></head>');
		res.write(
			'<body><form action="/message" method="POST"><input type="text" name="message"><button = "submit">Send</button></form></body>');
		res.write('</html>');
		return res.end();
	} else if(url === '/Course') {
    	res.write('<html>');
		res.write('<head><title>My First Page</title></head>');
		res.write('<body><h1>course</h1></body>');
		res.write('</html>');
    	return res.end();
    }
	res.setHeader('Content-Type', 'text/html');
	res.write('<html>');
	res.write('<head><title>My First Page</title></head>');
	res.write('<body><h1>Hello from my Node.js Server!</h1></body>');
	res.write('</html>');
	res.end('Hello Node'); //์ด ์‹œ์ ๋ถ€ํ„ฐ๋Š” ๋” ์ด์ƒ ์•„๋ฌด ๊ฒƒ๋„ ์ž…๋ ฅํ•ด์„œ๋Š” ์•ˆ๋จ
	//์ด ๋ถ€๋ถ„์€ ์šฐ๋ฆฌ๊ฐ€ ํด๋ผ์ด์–ธํŠธ๋กœ ๋‹ค์‹œ ์ „์†กํ•˜๋Š” ๋ถ€๋ถ„์œผ๋กœ, Node.js๊ฐ€ ํด๋ผ์ด์–ธํŠธ๋กœ ๋‹ค์‹œ ์ „์†กํ•˜๊ธฐ ๋•Œ๋ฌธ 
});

server.listen(3000);

 

 

2.  ๋ฆฌ๋‹ค์ด๋ ‰์…˜

์ด์ œ GET ์š”์ฒญ ๋ง๊ณ  POST ์š”์ฒญ์„ ๋‹ค๋ฃจ๋„๋ก ํ•ด๋ณธ๋‹ค.

request method์—์„œ ๋ฉ”์„œ๋“œ๋ฅผ ํŒŒ์‹ฑํ•˜๊ณ  ์•„๋ž˜์˜ ์กฐ๊ฑด์„ ์ถ”๊ฐ€ํ•ด๋ณด์ž.

else if (url === '/message' && method === 'POST')

์ด์ œ ํ•ด๋‹น ์กฐ๊ฑด๋ฌธ์— ๋‹ฟ์œผ๋ฉด ์œ ์ €๋ฅผ ๋‹ค์‹œ /๋กœ ๋ณด๋‚ด์–ด Course์— ๋‚จ๊ฒจ๋‘์ง€ ์•Š์œผ๋ ค๊ณ  ํ•œ๋‹ค!

๋Œ€์‹  ์ƒˆ๋กœ์šด ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜์—ฌ ์œ ์ €๊ฐ€ ์ž…๋ ฅํ•œ ๋ฉ”์‹œ์ง€๋ฅผ ์ €์žฅํ•ด์ฃผ๋„๋ก ํ•œ๋‹ค.

 

๊ฒฝ๋กœ ์žฌ์ง€์ •๊ณผ ํŒŒ์ผ ์ƒ์„ฑ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด๋ณธ๋‹ค.

๋‹ค๋ฅธ ํŒจํ‚ค์ง€, ๋‹ค๋ฅธ ์ฝ”์–ด ๋ชจ๋“ˆ์ด ํ•„์š”ํ•˜๋‹ค. (ํŒŒ์ผ์‹œ์Šคํ…œ ์ฝ”์–ด๋ชจ๋“ˆ)  ์ƒ์ˆ˜์— ์ €์žฅํ•ด์„œ ๋ถˆ๋Ÿฌ์™€ ์›ํ•˜๋Š” ์ด๋ฆ„์„ ๋ถ™์—ฌ๋„ ๋œ๋‹ค.

์ด ํฌ์ŠคํŒ…์—์„œ๋Š” fs

const fs = require('fs');

 

wirteFile์€ ํŒŒ์ผ๋กœ ๊ฐ€๋Š” ๊ฒฝ๋กœ๋ฅผ ์ทจํ•˜๊ฒŒ ๋˜๋ฉฐ ์ด๋ฆ„์€ ๊ฐ„๋‹จํ•˜๊ฒŒ message.txt

 

writeHead๋Š” ํ•œ๋ฒˆ์— ๋ช‡๊ฐ€์ง€ ๋ฉ”ํƒ€ ์ •๋ณด๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋ฉฐ

๋‹ค์Œ์œผ๋กœ ๊ฒฝ๋กœ ์žฌ์ง€์ •์„ ์˜๋ฏธํ•˜๋Š” ์ƒํƒœ์ฝ”๋“œ 302 ์„ค์ •, ๋‘๋ฒˆ์งธ ์ธ์ž๋กœ๋Š” js ๊ฐ์ฒด์™€ ์„ค์ •ํ•˜๊ธธ ์›ํ•˜๋Š” ํ—ค๋” ์ „๋‹ฌ

const http = require('http');
const fs = require('fs');

const server = http.createServer((req, res) => {
	const url = req.url;
	const method = req.method;
	if (url === '/') { //url์ด ์•„๋ฌด๋Ÿฐ ๊ฒฝ๋กœ๊ฐ€ ์—†๋‹ค๋ฉด,
		res.write('<html>');
		res.write('<head><title>My First Page</title></head>');
		res.write(
			'<body><form action="/message" method="POST"><input type="text" name="message"><button = "submit">Send</button></form></body>');
		res.write('</html>');
		return res.end();
	} else if (url === '/message' && method === 'POST') {
		fs.writeFileSync('message.txt', '๋”๋ฏธํ…์ŠคํŠธ');
		//res.writeHead(302, {});
		res.statusCode = 302;
		res.setHeader('Location', '/')//๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์ˆ˜๋ฝํ•˜๋Š” ๋””ํดํŠธ ํ—ค๋”,
		//์œ„์น˜์˜ ๊ฒฝ์šฐ /๋กœ ์„ค์ •ํ•˜๊ฒŒ ๋˜๋ฉด ๋‚ด๊ฐ€ ์ด๋ฏธ ์‹คํ–‰ ์ค‘์ธ ํ˜ธ์ŠคํŠธ๋ฅผ ์ž๋™์œผ๋กœ ์‚ฌ์šฉํ•˜๊ฒŒ ๋œ๋‹ค.
		return res.end();

	}
	res.setHeader('Content-Type', 'text/html');
	res.write('<html>');
	res.write('<head><title>My First Page</title></head>');
	res.write('<body><h1>Hello from my Node.js Server!</h1></body>');
	res.write('</html>');
	res.end('Hello Node'); //์ด ์‹œ์ ๋ถ€ํ„ฐ๋Š” ๋” ์ด์ƒ ์•„๋ฌด ๊ฒƒ๋„ ์ž…๋ ฅํ•ด์„œ๋Š” ์•ˆ๋จ
	//์ด ๋ถ€๋ถ„์€ ์šฐ๋ฆฌ๊ฐ€ ํด๋ผ์ด์–ธํŠธ๋กœ ๋‹ค์‹œ ์ „์†กํ•˜๋Š” ๋ถ€๋ถ„์œผ๋กœ, Node.js๊ฐ€ ํด๋ผ์ด์–ธํŠธ๋กœ ๋‹ค์‹œ ์ „์†กํ•˜๊ธฐ ๋•Œ๋ฌธ 
});

server.listen(3000);

 

๋‹ค์‹œ ์„œ๋ฒ„๋ฅผ ๋Œ๋ฆฌ๊ณ  ์•„๋ฌด ๊ฐ’์ด๋‚˜ ์ž…๋ ฅํ•˜๊ณ  ๋ฒ„ํŠผ ๋ˆŒ๋ €์„ ๋•Œ์˜ ๋„คํŠธ์›Œํฌ ํƒญ

ํŽธ์ง‘๊ธฐ์—์„œ๋„ message.txt ๊ฐ€ ์ž˜ ์ƒ์„ฑ๋˜์–ด ์žˆ์„ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค!

 

์ฐฝ์€ ๋‹น์—ฐํžˆ

 

 

3. ์œ ์ € ์ž…๋ ฅ๊ฐ’์„ ํŒŒ์ผ ์ƒ์„ฑํ•˜์—ฌ ์ €์žฅํ•˜๊ธฐ

 

์ด์ œ ์œ ์ €๊ฐ€ ๋ณด๋‚ธ ๋ฐ์ดํ„ฐ๋ฅผ ์‹ค์ œ๋กœ ํŒŒ์‹ฑํ•˜๊ณ  ํ•ด๋‹น ๋ฐ์ดํ„ฐ๋ฅผ ํŒŒ์ผ์— ์“ฐ๋Š” ์ž‘์—…์„ ํ•ด๋ณด๋„๋ก ํ•œ๋‹ค.

๋“ค์–ด์˜ค๋Š” ์š”์ฒญ์„ ๋ถ„์„ํ•ด์„œ ์š”์ฒญ์˜ ์ผ๋ถ€์ธ ๋ฐ์ดํ„ฐ๋ฅผ ์•Œ์•„๋ณด๋„๋ก ํ•œ๋‹ค.

 

๋“ค์–ด์˜ค๋Š” ์š”์ฒญ์€ ๋ฐ์ดํ„ฐ ์ŠคํŠธ๋ฆผ์œผ๋กœ ๋ณด๋‚ด์ง„๋‹ค..

 

* ๋ฐ์ดํ„ฐ ์ŠคํŠธ๋ฆผ์ด๋ž€?

 

- ์ŠคํŠธ๋ฆผ์€ ์ง€์†์ ์ธ ํ”„๋กœ์„ธ์Šค์ด๋‹ค.

๋…ธ๋“œ๊ฐ€ ๋งŽ์€ ์–‘์˜ ์š”์ฒญ์„ ํ•œ ์ฒญํฌ์”ฉ ์ฝ๊ณ  ์–ด๋А ์‹œ์ ์—๋Š” ๋‹ค ์ฝ๊ฒŒ ๋  ๊ฒƒ์ด๋‹ค.

์•„๋ฌด ๊ฒƒ๋„ ์•ˆ ํ•˜๋ฉด์„œ ๊ธฐ๋‹ค๋ฆด ํ•„์š”๊ฐ€ ์—†๋‹ค.

 

๋ฒ„ํผ๋Š” ๋ฒ„์Šค ์ •๋ฅ˜์žฅ๊ณผ ๊ฐ™๋‹ค. //๋ฒ„์Šค๋Š” ๊ณ„์† ๋‹ฌ๋ฆฌ๊ฒ ์ง€๋งŒ ์‚ฌ์šฉ์ž๊ฐ€ ์ค‘๊ฐ„์—๋„ ์ฐพ์•„ ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ๋Š”..

์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ฒญํฌ๋ฅผ ๋ณด์œ ํ•˜๊ณ  ํŒŒ์‹ฑ์ด ๋๋‚˜๊ธฐ ์ „์— ์ž‘์—…ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค.

https://levelup.gitconnected.com/streams-and-how-they-fit-into-node-js-async-nature-a08723055a67
https://levelup.gitconnected.com/streams-and-how-they-fit-into-node-js-async-nature-a08723055a67
https://levelup.gitconnected.com/streams-and-how-they-fit-into-node-js-async-nature-a08723055a67
https://levelup.gitconnected.com/streams-and-how-they-fit-into-node-js-async-nature-a08723055a67

๊ฐœ๋…์ด ์ถ”์ƒ์ ์ผ ์ˆ˜ ์žˆ์ง€๋งŒ, ๋ฒ„ํผ๋Š” ๋‹ค๋ฃจ๊ธฐ ์‰ฝ๋‹ค!

๋ฐ”๋กœ ์ฝ”๋“œ๋กœ ๋Œ์•„๊ฐ€๋ณด์ž

 

 

req.on(data)๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด ๋ฆฌ์Šค๋„ˆ๊ฐ€ ๋ฐ์ดํ„ฐ ์ฒญํฌ๋ฅผ ๋ฐ›๋„๋ก chunk๋ฅผ ์ž…๋ ฅํ•œ๋‹ค.

์ด์ œ ์ด chunk๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฌด์–ธ๊ฐ€๋ฅผ ํ•ด์•ผ๋งŒ chunk์™€ ์ƒํ˜ธ์ž‘์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. 

 

req.on(end)๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด ๋“ค์–ด์˜ค๋Š” ์š”์ฒญ ๋ฐ์ดํ„ฐ ํ˜น์€ ๋“ค์–ด์˜ค๋Š” ์ „๋ฐ˜์ ์ธ ์š”์ฒญ์„ ๋ถ„์„ํ•œ ํ›„์— ๋ฐœ์ƒํ•œ๋‹ค.

		req.on('data', (chunk) => {
			console.log(chunk);
			body.push(chunk); //์ด์ œ ์š”์ฒญ์— ๋Œ€ํ•œ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ์–ป์„ ๋•Œ๊นŒ์ง€ ํ•จ์ˆ˜๊ฐ€ ์‹คํ–‰๋  ๊ฒƒ
		});
		req.on('end');

์•„๋ž˜์™€ ๊ฐ™์€ ์ฝ”๋“œ์—์„œ const parsedBody = Buffer.concat(body); ๋ผ์ธ์ด ์ฃผ๋Š” ์˜๋ฏธ๋Š”,

์ƒˆ ๋ฒ„ํผ๊ฐ€ ์ƒ์„ฑ๋˜๊ณ  ๋ณธ๋ฌธ ์•ˆ์— ์žˆ๋˜ ๋ชจ๋“  ์ฒญํฌ๊ฐ€ ์ถ”๊ฐ€๋  ๊ฒƒ์ด๋‹ค.

	if (url === '/message' && method === 'POST') {
		//์š”์ฒญ ๋ณธ๋ฌธ์„ ์ง€์„ ๊ฒƒ์ด๋ฏ€๋กœ ์ƒ์ˆ˜๋ช… body๋กœ ์ž‘์„ฑ ํ›„, ๋นˆ ๋ฐฐ์—ด๋กœ ๋งŒ๋“ค์–ด ์ฃผ์ž.
		const body = [];
		//post ๋ฉ”์‹œ์ง€๋ฅผ ๋ฐ›์„ ๋•Œ ์‘๋‹ต์„ ๋ณด๋‚ด๊ฑฐ๋‚˜ ํŒŒ์ผ์— ์“ฐ๊ธฐ ์ „์— ์š”์ฒญ ๋ฐ์ดํ„ฐ ๋ฐ›์œผ๋ ค๋ฉด
		//req.๋ฅผ ์ž…๋ ฅํ•ด์„œ ์ด๋ฒคํŠธ ๋ฆฌ์Šค๋„ˆ๋ฅผ ๋“ฑ๋กํ•˜๋ฉด ๋œ๋‹ค. 
		//createServer๊ฐ€ ๋Œ€์‹  ์„œ๋ฒ„๋ฅผ ์ƒ์„ฑํ•ด์ฃผ๋Š” ๋ฐ˜๋ฉด, on ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ง์ ‘ ํ•  ์ˆ˜ ์žˆ๋‹ค.
		req.on('data', (chunk) => {
			console.log(chunk);
			body.push(chunk); //์ด์ œ ์š”์ฒญ์— ๋Œ€ํ•œ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ์–ป์„ ๋•Œ๊นŒ์ง€ ํ•จ์ˆ˜๊ฐ€ ์‹คํ–‰๋  ๊ฒƒ
		});
		req.on('end', () => {
			const parsedBody = Buffer.concat(body);
			// ์ฒญํฌ๋“ค์„ ๋ฐ›์€ ๋‹ค์Œ์— ์ฒญํฌ๋ฅผ ๋‹ค๋ฃจ๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋ฒ„ํผ(๋ฒ„์Šค์ •๋ฅ˜์žฅ) ๊ฐ™์€ ์žฅ์†Œ์—์„œ ์ƒํ˜ธ์ž‘์šฉ ํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋‹ค.
		});

 

parsedBody๋ผ๋Š” ๋ฒ„ํผ์— toString์„ ํ˜ธ์ถœํ•ด ๋ฌธ์ž์—ด๋กœ ์ „ํ™˜ํ•œ๋‹ค.

์ด์ œ ๋ฒ„์Šค์ •๋ฅ˜์žฅ(๋ฒ„ํผ)์— ๋ฒ„์Šค๊ฐ€ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ๋‹ค.

์ด์ œ ๋ฒ„ํผ๋ฅผ ๋ฌธ์ž์—ด๋กœ ์ „ํ™˜ํ•˜๋Š”๋ฐ ์š”์ฒญ์˜ ๋ณธ๋ฌธ์ด ํ…์ŠคํŠธ, ๋“ค์–ด์˜ค๋Š” ๋ฐ์ดํ„ฐ๋„ ํ…์ŠคํŠธ๋ผ์„œ ๋ฌธ์ž์—ด๋กœ ์ „ํ™˜ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด๋‹ค.

 

const parsedBoddy = Buffer.concat(body).toString();

 

const http = require('http');
const fs = require('fs');

const server = http.createServer((req, res) => {
	//createServer : ๋“ค์–ด์˜ค๋Š” ๋ชจ๋“  ์š”์ฒญ์— ์‹คํ–‰๋  ํ•จ์ˆ˜๋ฅผ ์ •์˜
	const url = req.url;
	const method = req.method;
	if (url === '/') { //url์ด ์•„๋ฌด๋Ÿฐ ๊ฒฝ๋กœ๊ฐ€ ์—†๋‹ค๋ฉด,
		res.write('<html>');
		res.write('<head><title>My First Page</title></head>');
		res.write(
			'<body><form action="/message" method="POST"><input type="text" name="message"><button = "submit">Send</button></form></body>');
		res.write('</html>');
		return res.end();
	}
	if (url === '/message' && method === 'POST') {
		//์š”์ฒญ ๋ณธ๋ฌธ์„ ์ง€์„ ๊ฒƒ์ด๋ฏ€๋กœ ์ƒ์ˆ˜๋ช… body๋กœ ์ž‘์„ฑ ํ›„, ๋นˆ ๋ฐฐ์—ด๋กœ ๋งŒ๋“ค์–ด ์ฃผ์ž.
		const body = [];
		//post ๋ฉ”์‹œ์ง€๋ฅผ ๋ฐ›์„ ๋•Œ ์‘๋‹ต์„ ๋ณด๋‚ด๊ฑฐ๋‚˜ ํŒŒ์ผ์— ์“ฐ๊ธฐ ์ „์— ์š”์ฒญ ๋ฐ์ดํ„ฐ ๋ฐ›์œผ๋ ค๋ฉด
		//req.๋ฅผ ์ž…๋ ฅํ•ด์„œ ์ด๋ฒคํŠธ ๋ฆฌ์Šค๋„ˆ๋ฅผ ๋“ฑ๋กํ•˜๋ฉด ๋œ๋‹ค. 
		//createServer๊ฐ€ ๋Œ€์‹  ์„œ๋ฒ„๋ฅผ ์ƒ์„ฑํ•ด์ฃผ๋Š” ๋ฐ˜๋ฉด, on ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ง์ ‘ ํ•  ์ˆ˜ ์žˆ๋‹ค.
		req.on('data', (chunk) => {
			console.log(chunk);
			body.push(chunk); //์ด์ œ ์š”์ฒญ์— ๋Œ€ํ•œ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ์–ป์„ ๋•Œ๊นŒ์ง€ ํ•จ์ˆ˜๊ฐ€ ์‹คํ–‰๋  ๊ฒƒ
		});
		req.on('end', () => {
			const parsedBoddy = Buffer.concat(body).toString(); //๋ฒ„ํผ๊ฐ€ ์ƒ๊ธด ์ฒญํฌ์— ์ž‘์—…
			console.log(parsedBoddy);
			// ์ฒญํฌ๋“ค์„ ๋ฐ›์€ ๋‹ค์Œ์— ์ฒญํฌ๋ฅผ ๋‹ค๋ฃจ๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋ฒ„ํผ(๋ฒ„์Šค์ •๋ฅ˜์žฅ) ๊ฐ™์€ ์žฅ์†Œ์—์„œ ์ƒํ˜ธ์ž‘์šฉ ํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋‹ค.
		});
		//on ๋ฉ”์„œ๋“œ๋Š” ํŠน์ • ์ด๋ฒคํŠธ๋ฅผ ๋“ค์„ ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค.
		//์ฒซ๋ฒˆ์งธ ์ธ์ž : data์ด๋ฒคํŠธ๋Š” ์ƒˆ ์ฒญํฌ๊ฐ€ ์ฝํž ์ค€๋น„๊ฐ€ ๋  ๋•Œ๋งˆ๋‹ค ๋ฐ์ดํ„ฐ ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๋ฐ์— ๋ฒ„ํผ๊ฐ€ ๋„์›€์„ ์ค€๋‹ค.
		//๋‘๋ฒˆ์งธ ์ธ์ž : ๋ชจ๋“  ๋ฐ์ดํ„ฐ ์ด๋ฒคํŠธ์— ์‹คํ–‰๋  ํ•จ์ˆ˜๋ฅผ ๋„ฃ์–ด์•ผ ํ•œ๋‹ค. 
		// ์—ฌ๊ธฐ์„œ๋Š” ๋“ค์–ด์˜ค๋Š” ๋ชจ๋“  ๋ฐ์ดํ„ฐ์— ์‹คํ–‰๋  ํ•จ์ˆ˜๋ฅผ ์ •์˜ํ•œ๋‹ค.
		fs.writeFile('message.txt', '๋”๋ฏธํ…์ŠคํŠธ');
		//res.writeHead(302, {});
		res.statusCode = 302;
		res.setHeader('Location', '/')//๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์ˆ˜๋ฝํ•˜๋Š” ๋””ํดํŠธ ํ—ค๋”,
		//์œ„์น˜์˜ ๊ฒฝ์šฐ /๋กœ ์„ค์ •ํ•˜๊ฒŒ ๋˜๋ฉด ๋‚ด๊ฐ€ ์ด๋ฏธ ์‹คํ–‰ ์ค‘์ธ ํ˜ธ์ŠคํŠธ๋ฅผ ์ž๋™์œผ๋กœ ์‚ฌ์šฉํ•˜๊ฒŒ ๋œ๋‹ค.
		return res.end();

	}
	res.setHeader('Content-Type', 'text/html');
	res.write('<html>');
	res.write('<head><title>My First Page</title></head>');
	res.write('<body><h1>Hello from my Node.js Server!</h1></body>');
	res.write('</html>');
	res.end('Hello Node'); //์ด ์‹œ์ ๋ถ€ํ„ฐ๋Š” ๋” ์ด์ƒ ์•„๋ฌด ๊ฒƒ๋„ ์ž…๋ ฅํ•ด์„œ๋Š” ์•ˆ๋จ
	//์ด ๋ถ€๋ถ„์€ ์šฐ๋ฆฌ๊ฐ€ ํด๋ผ์ด์–ธํŠธ๋กœ ๋‹ค์‹œ ์ „์†กํ•˜๋Š” ๋ถ€๋ถ„์œผ๋กœ, Node.js๊ฐ€ ํด๋ผ์ด์–ธํŠธ๋กœ ๋‹ค์‹œ ์ „์†กํ•˜๊ธฐ ๋•Œ๋ฌธ 
});

server.listen(3001);

 

 

์œ„์™€ ๊ฐ™์ด ์ฝ”๋“œ๋ฅผ ์™„์„ฑํ•˜๊ณ , ์„œ๋ฒ„๋ฅผ ์žฌ์‹คํ–‰์‹œ์ผœ๋ณด์ž.

๋กœ๊ทธ๋ฅผ ๋ณด๋ฉด ๋‘๊ฐœ์˜ ์š”์†Œ๊ฐ€ ์žˆ๋‹ค. 

์ฒซ๋ฒˆ์งธ๋Š” ๊ฐœ๋ฐœ์ž๊ฐ€ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์—†๋Š” ์ฒญํฌ์ด๋‹ค <Buffer ..~~~> conosole.log(chunk)

๋ฐ˜๋ฉด, parsedBody๋Š” ์œ ์ €๊ฐ€ ์ž…๋ ฅํ•œ ๋ฉ”์‹œ์ง€๋ฅผ ๋ฐ›์•„์„œ ๊ฐœ๋ฐœ์ž๊ฐ€ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ๋ฉ”์‹œ์ง€๋ฅผ ์‚ฐ์ถœํ–ˆ๋‹ค.

(input์˜ name์„ message ๋กœ ์ง€์–ด์„œ message๋กœ ์‹œ์ž‘ํ•จ)

 

์—ฌ๊ธฐ form์ด ๋ชจ๋“  ์ž…๋ ฅ ๋ฐ์ดํ„ฐ์™€ ํ•จ๊ป˜ ์ž๋™์œผ๋กœ ์š”์ฒญ์„ ๋ณด๋‚ด ์š”์ฒญ ๊ฐ์ฒด์— ํ‚ค-๊ฐ’ ์Œ์œผ๋กœ ๋„ฃ๋Š”๋‹ค.

<form action="/message" method="POST">

์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•˜๋Š” ๊ฒƒ์ด ๊ฐ’์ด๋ฉฐ, ์ž…๋ ฅ์— ์ฃผ์–ด์ง€๋Š” ์ด๋ฆ„์ด ํ‚ค์ด๋‹ค.  

<input type="text" name="message">

๋กœ๊ทธ๋ฅผ ๋ณด๋ฉด ํ‚ค์™€ ๊ฐ’์€ ๋“ฑํ˜ธ๋กœ ๋‚˜๋‰˜์–ด์ ธ ์žˆ๋‹ค. ๊ทธ๋Ÿผ ๋น„๋กœ์†Œ ํŒŒ์ผ์— ์ž…๋ ฅ์„ ์ €์žฅํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.

๊ทธ๋Ÿผ ๋ฐ”๋กœ req.on(end)์— ์ƒˆ๋กœ์šด ์ƒ์ˆ˜ message๋ฅผ ๋งŒ๋“ค๊ณ  paresdBody.split์— ๋“ฑํ˜ธ๋ฅผ ๋„ฃ์€ ํ›„ ๊ฒฐ๊ณผ ๋ฐฐ์—ด์˜ ๋‘๋ฒˆ์งธ ์š”์†Œ์ธ ์ธ๋ฑ์Šค 1์„ ์š”์†Œ๋กœ ๋‘๋Š” ์ƒ๊ฐ์„ ํ•  ์ˆ˜๊ฐ€ ์žˆ๋‹ค. 

 

		req.on('end', () => {
			const parsedBody = Buffer.concat(body).toString(); //๋ฒ„ํผ๊ฐ€ ์ƒ๊ธด ์ฒญํฌ์— ์ž‘์—…
			console.log(parsedBody);
			const message = parsedBody.split('=')[1];
			console.log(message);
			// ์ฒญํฌ๋“ค์„ ๋ฐ›์€ ๋‹ค์Œ์— ์ฒญํฌ๋ฅผ ๋‹ค๋ฃจ๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋ฒ„ํผ(๋ฒ„์Šค์ •๋ฅ˜์žฅ) ๊ฐ™์€ ์žฅ์†Œ์—์„œ ์ƒํ˜ธ์ž‘์šฉ ํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋‹ค.
		});

์ด์ œ writeFileSync๋ฅผ ํ•จ์ˆ˜์˜ ๋งˆ์ง€๋ง‰์— ๋ง๋ถ™์ธ๋‹ค. ๋‘๋ฒˆ์งธ ์ธ์ž๋กœ๋Š” message๋ฅผ ๋„ฃ์–ด์ค€๋‹ค.

		req.on('end', () => {
			const parsedBody = Buffer.concat(body).toString(); //๋ฒ„ํผ๊ฐ€ ์ƒ๊ธด ์ฒญํฌ์— ์ž‘์—…
			console.log(parsedBody);
			const message = parsedBody.split('=')[1];
			console.log(message);
			fs.writeFileSync('message.txt', message);
			// ์ฒญํฌ๋“ค์„ ๋ฐ›์€ ๋‹ค์Œ์— ์ฒญํฌ๋ฅผ ๋‹ค๋ฃจ๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋ฒ„ํผ(๋ฒ„์Šค์ •๋ฅ˜์žฅ) ๊ฐ™์€ ์žฅ์†Œ์—์„œ ์ƒํ˜ธ์ž‘์šฉ ํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋‹ค.
		});

 

์˜คํ˜ธ ๋‹ค์‹œ ์„œ๋ฒ„๋ฅผ ์žฌ์‹œ์ž‘ํ•˜๊ณ 

LESSERAFIM์„ ์ž…๋ ฅํ•˜๋‹ˆ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์œ ์ €์˜ ์ž…๋ ฅ๊ฐ’์ด ์ƒˆ๋กœ์šด ํŒŒ์ผ ์ƒ์„ฑ ํ›„ ์ €์žฅ๊นŒ์ง€ ์ž˜ ๋˜๋Š” ๊ฒƒ์„ ํ™•์ธ ํ•  ์ˆ˜ ์žˆ๋‹ค!

 

 

์ „์ฒด ์ฝ”๋“œ

const http = require('http');
const fs = require('fs');

const server = http.createServer((req, res) => {
	//createServer : ๋“ค์–ด์˜ค๋Š” ๋ชจ๋“  ์š”์ฒญ์— ์‹คํ–‰๋  ํ•จ์ˆ˜๋ฅผ ์ •์˜
	const url = req.url;
	const method = req.method;
	if (url === '/') { //url์ด ์•„๋ฌด๋Ÿฐ ๊ฒฝ๋กœ๊ฐ€ ์—†๋‹ค๋ฉด,
		res.write('<html>');
		res.write('<head><title>My First Page</title></head>');
		res.write(
			'<body><form action="/message" method="POST"><input type="text" name="message"><button = "submit">Send</button></form></body>');
		res.write('</html>');
		return res.end();
	}
	if (url === '/message' && method === 'POST') {
		//์š”์ฒญ ๋ณธ๋ฌธ์„ ์ง€์„ ๊ฒƒ์ด๋ฏ€๋กœ ์ƒ์ˆ˜๋ช… body๋กœ ์ž‘์„ฑ ํ›„, ๋นˆ ๋ฐฐ์—ด๋กœ ๋งŒ๋“ค์–ด ์ฃผ์ž.
		const body = [];
		//post ๋ฉ”์‹œ์ง€๋ฅผ ๋ฐ›์„ ๋•Œ ์‘๋‹ต์„ ๋ณด๋‚ด๊ฑฐ๋‚˜ ํŒŒ์ผ์— ์“ฐ๊ธฐ ์ „์— ์š”์ฒญ ๋ฐ์ดํ„ฐ ๋ฐ›์œผ๋ ค๋ฉด
		//req.๋ฅผ ์ž…๋ ฅํ•ด์„œ ์ด๋ฒคํŠธ ๋ฆฌ์Šค๋„ˆ๋ฅผ ๋“ฑ๋กํ•˜๋ฉด ๋œ๋‹ค. 
		//createServer๊ฐ€ ๋Œ€์‹  ์„œ๋ฒ„๋ฅผ ์ƒ์„ฑํ•ด์ฃผ๋Š” ๋ฐ˜๋ฉด, on ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ง์ ‘ ํ•  ์ˆ˜ ์žˆ๋‹ค.
		req.on('data', (chunk) => {
			console.log(chunk);
			body.push(chunk); //์ด์ œ ์š”์ฒญ์— ๋Œ€ํ•œ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ์–ป์„ ๋•Œ๊นŒ์ง€ ํ•จ์ˆ˜๊ฐ€ ์‹คํ–‰๋  ๊ฒƒ
		});
		req.on('end', () => {
			const parsedBody = Buffer.concat(body).toString(); //๋ฒ„ํผ๊ฐ€ ์ƒ๊ธด ์ฒญํฌ์— ์ž‘์—…
			console.log(parsedBody);
			const message = parsedBody.split('=')[1];
			console.log(message);
			fs.writeFile('message.txt', message);
			// ์ฒญํฌ๋“ค์„ ๋ฐ›์€ ๋‹ค์Œ์— ์ฒญํฌ๋ฅผ ๋‹ค๋ฃจ๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋ฒ„ํผ(๋ฒ„์Šค์ •๋ฅ˜์žฅ) ๊ฐ™์€ ์žฅ์†Œ์—์„œ ์ƒํ˜ธ์ž‘์šฉ ํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋‹ค.
		});
		//on ๋ฉ”์„œ๋“œ๋Š” ํŠน์ • ์ด๋ฒคํŠธ๋ฅผ ๋“ค์„ ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค.
		//์ฒซ๋ฒˆ์งธ ์ธ์ž : data์ด๋ฒคํŠธ๋Š” ์ƒˆ ์ฒญํฌ๊ฐ€ ์ฝํž ์ค€๋น„๊ฐ€ ๋  ๋•Œ๋งˆ๋‹ค ๋ฐ์ดํ„ฐ ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๋ฐ์— ๋ฒ„ํผ๊ฐ€ ๋„์›€์„ ์ค€๋‹ค.
		//๋‘๋ฒˆ์งธ ์ธ์ž : ๋ชจ๋“  ๋ฐ์ดํ„ฐ ์ด๋ฒคํŠธ์— ์‹คํ–‰๋  ํ•จ์ˆ˜๋ฅผ ๋„ฃ์–ด์•ผ ํ•œ๋‹ค. 
		// ์—ฌ๊ธฐ์„œ๋Š” ๋“ค์–ด์˜ค๋Š” ๋ชจ๋“  ๋ฐ์ดํ„ฐ์— ์‹คํ–‰๋  ํ•จ์ˆ˜๋ฅผ ์ •์˜ํ•œ๋‹ค.
		//fs.writeFile('message.txt', '๋”๋ฏธํ…์ŠคํŠธ');
		//res.writeHead(302, {});
		res.statusCode = 302;
		res.setHeader('Location', '/')//๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์ˆ˜๋ฝํ•˜๋Š” ๋””ํดํŠธ ํ—ค๋”,
		//์œ„์น˜์˜ ๊ฒฝ์šฐ /๋กœ ์„ค์ •ํ•˜๊ฒŒ ๋˜๋ฉด ๋‚ด๊ฐ€ ์ด๋ฏธ ์‹คํ–‰ ์ค‘์ธ ํ˜ธ์ŠคํŠธ๋ฅผ ์ž๋™์œผ๋กœ ์‚ฌ์šฉํ•˜๊ฒŒ ๋œ๋‹ค.
		return res.end();

	}
	res.setHeader('Content-Type', 'text/html');
	res.write('<html>');
	res.write('<head><title>My First Page</title></head>');
	res.write('<body><h1>Hello from my Node.js Server!</h1></body>');
	res.write('</html>');
	res.end('Hello Node'); //์ด ์‹œ์ ๋ถ€ํ„ฐ๋Š” ๋” ์ด์ƒ ์•„๋ฌด ๊ฒƒ๋„ ์ž…๋ ฅํ•ด์„œ๋Š” ์•ˆ๋จ
	//์ด ๋ถ€๋ถ„์€ ์šฐ๋ฆฌ๊ฐ€ ํด๋ผ์ด์–ธํŠธ๋กœ ๋‹ค์‹œ ์ „์†กํ•˜๋Š” ๋ถ€๋ถ„์œผ๋กœ, Node.js๊ฐ€ ํด๋ผ์ด์–ธํŠธ๋กœ ๋‹ค์‹œ ์ „์†กํ•˜๊ธฐ ๋•Œ๋ฌธ 
});

server.listen(3005);

 

์ง€๊ธˆ๊นŒ์ง€๋Š” Node.js์˜ ๋ฏธ๊ฐ€๊ณต ๋…ผ๋ฆฌ๋ฅผ ์‚ดํŽด๋ณด์•˜๊ณ 

๋‚˜์ค‘์—๋Š” ์ด๋Ÿฌํ•œ ๋ฏธ๊ฐ€๊ณต ๋…ผ๋ฆฌ๋ฅผ ์ˆจ๊ธฐ๋Š” Express.js๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ์ง€๊ธˆ๊นŒ์ง€์˜ ํ•™์Šต์œผ๋กœ

Express.js ๊ฐ™์€ ํˆด์ด ์–ด๋–ป๊ฒŒ ๊ณผ์ •์„ ๋‹จ์ˆœํ™”ํ•˜๋Š”์ง€ ์•Œ ์ˆ˜ ์žˆ๋‹ค. 

 

728x90

'Javascript > Node.js' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[Postman] Rest APIs ๊ฐœ๋ฐœ์„ ์œ„ํ•œ ํฌ์ŠคํŠธ๋งจ ์…‹์—…  (0) 2022.12.12
[Node.js] (6) Single Thread, Event Loop & Blocking Code  (0) 2022.12.09
[Node.js] (4) ์‘๋‹ต ์ „์†ก  (0) 2022.11.24
[Node.js] (3) ์š”์ฒญ ๊ฐ์ฒด  (0) 2022.11.23
[Node.js] (2) Node์˜ ๋ผ์ดํ”„์‚ฌ์ดํด ๋ฐ ์ด๋ฒคํŠธ ๋ฃจํ”„  (0) 2022.11.23
    'Javascript/Node.js' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
    • [Postman] Rest APIs ๊ฐœ๋ฐœ์„ ์œ„ํ•œ ํฌ์ŠคํŠธ๋งจ ์…‹์—…
    • [Node.js] (6) Single Thread, Event Loop & Blocking Code
    • [Node.js] (4) ์‘๋‹ต ์ „์†ก
    • [Node.js] (3) ์š”์ฒญ ๊ฐ์ฒด
    Rainbow๐ŸŒˆCoder
    Rainbow๐ŸŒˆCoder
    ๋ชฐ๋ผ๋„ ๊ฒฐ๊ตญ์€ ์•„๋Š” ๊ฐœ๋ฐœ์ž, ๊ทธ๋Ÿฐ ์‚ฌ๋žŒ์ด ๋˜๊ธฐ ์œ„ํ•œ ๋งค์ผ์˜ ํ•œ๊ฑธ์Œ

    ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”