๐ฆ_21.12.28 TIL
21๋ 12์ 28์ผ
๐ ์ฝ๋๋ผ์ด์ธ - ์ผ๋จ ๋ง๋๋ node.js
๐ Chapter_4 Node.js๋ก ๋์ ์ฒซ ์๋ฒ ๊ตฌ์ถํ๊ธฐ
๐ Sever
-
๋คํธ์ํฌ๋ฅผ ํตํด ํด๋ผ์ด์ธํธ์ ์ ๋ณด๋ ์๋น์ค๋ฅผ ์ ๊ณตํ๋ ์ปดํจํฐ ํน์ ํ๋ก๊ทธ๋จ
=> ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ๋ํด ์๋ตํ๋ ์ญํ -
์น์ฌ์ดํธ์ ์ ์ํ ๋
- ํด๋ฆญ ๋๋ url ์ ๋ ฅ์ ํตํด ๋ค์ด๊ฐ๋ค.
- ์ด๋ ์ฐ๋ฆฌ๋ ํด๋ผ์ด์ธํธ(์ฌ์ฉ์)๊ฐ ๋๋ค.
- ๊ทธ๋ฆฌ๊ณ url์ ํตํด ์์ฒญ์ ํ๊ฒ ๋๋ค.
- ์๋ฒ๋ ๊ทธ์ ๋ํ ๋ฐํ๊ฐ์ผ๋ก ์๋ต์ ํ๋ค.
- html ์ฝ๋๊ฐ ๋ด๊ธด ์ฝ๋๋ฅผ ํตํด ๋ธ๋ผ์ฐ์ ๋ก ๋๊ฒจ์ค๋ค.
- ํด๋ผ์ด์ธํธ๋ html ์ฝ๋๋ฅผ ํตํด ๋ธ๋ผ์ฐ์ ๋ด์์ ํด์ํ๊ณ , ํด์ํ ๊ฒฐ๊ณผ๊ฐ์ ๋ฐํ์ผ๋ก ์ฌ์ฉ์๋ ์น์ฌ์ดํธ์ ์ ์ํ ์ ์๊ฒ ๋๋ค.
๋ค์ด๋ฒ๋ผ๋ ์ฌ์ดํธ url์ ์๋ฒ์ ์์ฒญ
=> ์๋ฒ๋ ๋ค์ด๋ฒ๋ผ๋ html ์ฝ๋๊ฐ ๋ด๊ธด ๊ฒฐ๊ณผ๊ฐ์ ํด๋ผ์ด์ธํธ์๊ฒ ๋ณด๋
=> ํด๋ผ์ด์ธํธ๋ ๋ค์ด๋ฒ์ ์ ์์ ์ผ๋ก ์ ์
const http = require("http");
http
.createServer((req, res) => {
// writeHead : header ๊ฐ์ ์ถ๊ฐํด์ ๋ณด๋ด์ฃผ๋ ๊ฒ
// ์๋ต์ ๋ณด๋ผ ๋ Header ๊ฐ์ ํตํด์ ์ํ์ฝ๋๋ผ๊ณ ํ๋ ์ซ์(200)๋ฅผ ๋ณด๋ธ๋ค.
// ํ์
์ ๋ํด์๋ ๊ฐ์ด ๋ณด๋ธ๋ค.
res.writeHead(200, { "Content-Type": "text/html" });
// 200 : ์๋ต์ ์ ๋ณด๋์ ๋์ ์ซ์
// 404 : ํด๋น ์๋ต์ด ์ ์์ ์ผ๋ก ์ด๋ฃจ์ด์ง์ง ์์์ ์๋ฏธ
// type์ html์ ๋ณด๋ด๊ฒ ๋ค๊ณ ๋ช
์ํ ๊ฒ
res.end("<p>Hello World!</p>");
})
.listen(3000, () => {
console.log("3000๋ฒ ํฌํธ ์๋ฒ ์ ์ ์๋ฃ!");
});
require
: ํด๋น ํจํค์ง๋ฅผ ๋ถ๋ฌ์์ ์ฌ์ฉํ ์ ์๊ฒ ํด์ค๋ค.req
: ์์ฒญ๋ณด๋ผ ๋์ ์ ๋ณดres
: ํด๋ผ์ด์ธํธ์ ์๋ต์ ๋ณด๋ผ ๋ ํด๋น ์ฝ๋๋ฅผ ํตํด์ ์๋ต์ ๋ณด๋ธ๋ค.
# ์ถ๋ ฅ ๊ฒฐ๊ณผ
PS C:๊ฒฝ๋ก\js_test\server> node server.js
3000๋ฒ ํฌํธ ์๋ฒ ์ ์ ์๋ฃ!
- http://localhost:3000/ ์์ ํ์ธ
๐ localhost
- ํ์ฌ ์ปดํจํฐ์ ๋ด๋ถ ์ฃผ์
- ์๋ฒ์ ์ ๊ทผํ๊ธฐ ์ํด์๋ ์ฃผ์๊ฐ ํ์
=>localhost
๋ ์ปดํจํฐ์ ์ ๊ทผํ๊ธฐ ์ํ ์ฃผ์ - ์๋ฒ ๊ฐ๋ฐํ ๋ ํ
์คํธ์ฉ์ผ๋ก ๋ง์ด ์ฐ์
=> ์๋ฒ ๊ฐ๋ฐ ์ค ์ค์ ์ปดํจํฐ์ ๋ฐฐํฌ๋ฅผ ํด์ ์ฌ์ฉ์์๊ฒ ์ ๊ทผํ ์ ์๋๋ก ํ๋ ๊ฒ์ ๋ณด์์์ ๋ฌธ์ ๋ ํจ์จ์ฑ์ด ์ข์ง ์๋ค.
=> ์ปดํจํฐ์ ๋ด๋ถ์ ์ฃผ์(localhost)๋ฅผ ํตํด ํ ์คํธ localhost
=127.0.0.1
127.0.0.1
= IP(Internet Protocol)
๐ ํฌํธ(Port)
- ์๋ฒ ๋ด์ ํ๋ก์ธ์ค๋ฅผ ๊ตฌ๋ถํ๋ ๋ฒํธ
- ํ๋ก์ธ์ค : ํ๋์ ๊ธฐ๋ฅ
- ์๋ฒ์์๋ ๋ค์ํ ์ผ์ ์ฒ๋ฆฌ(HTTP, DB ๋ฑ)
localhost
๋ฅผ ๊ฐ์ฅ ๊ธฐ๋ณธ ์ฃผ์๋ก ๋๊ณ , ๊ธฐ๋ฅ์ ๋ฐ๋ผ์ ํฌํธ๋ฒํธ๋ก ์ด๋ฅผ ๊ตฌ๋ถ(๋ถ๋ฆฌ)์ํด- ํฌํธ๋ฒํธ์ ๋ฐ๋ผ์ ์๋ฒ๋ ํฌํธ๋ฒํธ์ ์๋ ๊ธฐ๋ฅ์ ํด๋ผ์ด์ธํธ์๊ฒ ์ ๋ฌ
=> ๋ค์ํ ๊ธฐ๋ฅ๋ค์ ๊ตฌ๋ถ์์ผ์ ์ ๊ทผํ ์ ์๋๋ก ํ๋ ์ ์ฉํ ๊ธฐ๋ฅ ์ค ํ๋
๐ Postman
- ์๋ฒ ๊ฐ๋ฐ ์ ์ด๋ฅผ ํ ์คํธํ ์ ์๋ ํด
- ์๋ฒ๋ฅผ ๋ง๋ค๊ณ ์คํ
=> ํด๋น ์๋ฒ์ ์ ๊ทผํ๊ธฐ ์ํด ๋ธ๋ผ์ฐ์ ์ url์ ์ ๋ ฅํด์ ์ ๊ทผ
=> ๋ธ๋ผ์ฐ์ ๋ฅผ ํตํด ์ ๊ทผ์ ํ ์ ์์ผ๋ ๋ธ๋ผ์ฐ์ ์์ฒด๊ฐ ์๋ฒ๋ฅผ ํ ์คํธํ๊ธฐ ์ํ ์ฉ๋๋ก ๋ง๋ค์ด ์ง ๊ฒ์ด ์๋๊ธฐ ๋๋ฌธ์ ์ ๊ทผ์ด ํ์ ์ ์ด๋ค. - Postman์ ํตํด ๋ ๋ค์ํ ๊ธฐ๋ฅ์ ํ์ฉํด์ ๊ฐ๋ฐ์ ์ด์ฉํ ์ ์๋ค.
=> ์๋ฒ ๊ฐ๋ฐ ์ ๋ง์ด ์ฌ์ฉํ๋ ํด - ์ค์น : Postman ์ฌ์ดํธ์ ์ ์ํด์ ๋ค์ด๋ก๋ ์งํ
HTTP Method
- ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์ ์์ฒญ์ ๋ณด๋ผ ๋ ์์ฒญ์ ์์ฑ์ ๋ง๋ HTTP Method๋ฅผ ์ ์ํด์ค์ผ ํ๋ค.
GET
: ๋จ์ ํ์ด์ง ์ด๋ ์์ฒญPOST
: ๊ฒ์๋ฌผ ์ ๋ก๋์ ๊ฐ์ ๊ธฐ๋ฅ ์์ฒญPUT
: ์ ๋ฐ์ดํธํ ๋DELETE
: ์ญ์ ํ ๋
=> Postman์ ์๋ฒ์ ์์ฒญ์ ๋ณด๋ด๊ณ ๊ทธ์ ๋ํ ์๋ต์ ๋ฐ์ ๋ ํด๋น ๊ฒฐ๊ณผ๊ฐ์ ๋ ์ฝ๊ฒ ๋ฐ์ ์ ์๋ ํด
๐ API ์๋ฒ
- ์์ฒญ์ ๋ฐ๊ณ ์๋ต์ ํ๋ ์๋ฒ
- ์์ฒญ์ ๋ณด๋ด๋ ์ฃผ์ฒด์ธ ํด๋ผ์ด์ธํธ๊ฐ ์์ฒญ์ ๋ณด๋ด๋ฉด ๊ทธ ์์ฒญ์ ์ฒ๋ฆฌํ๊ณ ์๋ต์ ๋ณด๋ด๋ ์๋ฒ
/๋ผ์ฐํฐ
๋ฐฉ์์ผ๋ก ๊ธฐ์กด url๋ก ์ ๊ทผ์ ํ๋๋ฐ, ๊ฐ๊ฐ ํน์ฑ์ ๋ง๋ url์ ๋ถ๊ธฐ ์ฒ๋ฆฌ
=> ์์ฒญ์ ๋ง๊ฒ ๋ถ๊ธฐ ์ฒ๋ฆฌํ๋ ๊ฒ
=> ๋ผ์ฐํ
const http = require("http");
// url์ ๋ง๊ฒ ๋ถ๊ธฐ์ฒ๋ฆฌํ ์๋ฒ
http.createServer((req, res) => {
// req์ url์ด base url("/")์ผ ๊ฒฝ์ฐ
if(req.url === "/") {
// ์๋ต์ ๋ณด๋์ ๋ ์ ์ ์๋์ ํ๋ค๋ฉด
// status code : 200
res.writeHead(200);
res.end("main url")
} else if (req.url === "/upload") {
res.writeHead(200);
res.end("upload url");
} else if (req.url === "/delete") {
res.writeHead(200);
res.end("delete url");
} else {
res.writeHead(404);
res.end("Not found!!!");
}
})
.listen(3000, () => {
// listen์ ์๋ฒ๋ฅผ ๋ค ๋ง๋ค๊ณ ํด๋น ํฌํธ(์ฌ๊ธฐ์๋ 3000) ๋ด์์ ๋๊ธฐ
console.log("3000๋ฒ ํฌํธ ์๋ฒ ์ ์ ์๋ฃ!")
});
HTTP response status codes
- ํน์ HTTP ์์ฒญ์ด ์ฑ๊ณต์ ์ผ๋ก ์๋ฃ๋์๋์ง ์ฌ๋ถ๋ฅผ ๋ํ๋
- Informational responses (100โ199)
- Successful responses (200โ299)
- Redirection messages (300โ399)
- Client error responses (400โ499)
- Server error responses (500โ599)
Author And Source
์ด ๋ฌธ์ ์ ๊ดํ์ฌ(๐ฆ_21.12.28 TIL), ์ฐ๋ฆฌ๋ ์ด๊ณณ์์ ๋ ๋ง์ ์๋ฃ๋ฅผ ๋ฐ๊ฒฌํ๊ณ ๋งํฌ๋ฅผ ํด๋ฆญํ์ฌ ๋ณด์๋ค https://velog.io/@qhflrnfl4324/21.12.28-TIL์ ์ ๊ท์: ์์์ ์ ๋ณด๊ฐ ์์์ URL์ ํฌํจ๋์ด ์์ผ๋ฉฐ ์ ์๊ถ์ ์์์ ์์ ์ ๋๋ค.
์ฐ์ํ ๊ฐ๋ฐ์ ์ฝํ ์ธ ๋ฐ๊ฒฌ์ ์ ๋ (Collection and Share based on the CC Protocol.)
์ข์ ์นํ์ด์ง ์ฆ๊ฒจ์ฐพ๊ธฐ
๊ฐ๋ฐ์ ์ฐ์ ์ฌ์ดํธ ์์ง
๊ฐ๋ฐ์๊ฐ ์์์ผ ํ ํ์ ์ฌ์ดํธ 100์ ์ถ์ฒ ์ฐ๋ฆฌ๋ ๋น์ ์ ์ํด 100๊ฐ์ ์์ฃผ ์ฌ์ฉํ๋ ๊ฐ๋ฐ์ ํ์ต ์ฌ์ดํธ๋ฅผ ์ ๋ฆฌํ์ต๋๋ค