🦁_21.12.28 TIL

BoriΒ·2022λ…„ 1μ›” 3일
2
post-thumbnail

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번 포트 μ„œλ²„ 접속 μ™„λ£Œ!

πŸ“Ž 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 μš”μ²­μ΄ μ„±κ³΅μ μœΌλ‘œ μ™„λ£Œλ˜μ—ˆλŠ”μ§€ μ—¬λΆ€λ₯Ό λ‚˜νƒ€λƒ„
    1. Informational responses (100–199)
    2. Successful responses (200–299)
    3. Redirection messages (300–399)
    4. Client error responses (400–499)
    5. Server error responses (500–599)

0개의 λŒ“κΈ€