2030 Engineer

Node.js로 웹서버 만들기 본문

WEB/Node.js

Node.js로 웹서버 만들기

Hard_Try 2021. 1. 13. 22:09

const http = require('http');

let server = http.createServer(function (request, response) {
  response.end('<h1>Hello JS!</h1>')
});
server.listen(3000); // 외부로 부터 요청을 받을 수 있게끔 한다. 포트번호를 의미

URL 쪼개기

let url = new URL('https://kr.investing.com/equities/united-continenta');

console.log(url.protocol);
console.log(url.host);
console.log(url.pathname);
console.log(url.search);

라우팅 해보기

const http = require('http');

users = ['Tom', 'Andy', 'Jessica', 'Paul'];

let server = http.createServer(function (request, response) {
  if(request.url === '/'){ // 호스트뒤에 아무것도 없으면 '/'이 붙어있는걸로 친다.
    response.end('<h1>Welcome!</h1>');
  } else if(request.url === '/users') {
    response.end('<h1>' + users + '</h1>');
  } else {
    response.end('<h1>Page Not Available</h1>')
  }
});

server.listen(3000); // 외부로 부터 요청을 받을 수 있게끔 한다. 포트번호를 의미

http 모듈로 라우팅할 경우 (번호에 따른 사람 이름 출력)

const http = require('http');

users = ['Tom', 'Andy', 'Jessica', 'Pual'];

let server = http.createServer(function (request, response) {
  if(request.url === '/'){
    response.end('<h1>Welcome!</h1>');
  } else if(request.url === '/users') {
    response.end('<h1>' + users + '</h1>');
  } else if (request.url.split('/')[1] === 'users') {
    let userIdx = request.url.split('/')[2];
    let userName = users[userIdx - 1];

    response.end('<h1>' + userName + '</h1>')
  } else {
    response.end('<h1>Page Not Available</h1>')
  }
});

server.listen(3000); // 외부로 부터 요청을 받을 수 있게끔 한다. 포트번호를 의미

Airbnb 코드스타일 적용

const http = require('http');

const users = ['Tom', 'Andy', 'Jessica', 'Pual'];

// Arrow Function 형태로 바꾸기, 상수 const로 바꾸기
const server = http.createServer((request, response) => {
  if(request.url === '/'){
    response.end('<h1>Welcome!</h1>');
  } else if(request.url === '/users') {
    response.end(`<h1>${user}</h1>`);
  } else if (request.url.split('/')[1] === 'users') {
    const userIdx = request.url.split('/')[2];
    const userName = users[userIdx - 1];
    // 템플릿 문자열 사용
    response.end(`<h1>${userName}</h1>`)
  } else {
    response.end('<h1>Page Not Available</h1>')
  }
});

server.listen(3000); // 외부로 부터 요청을 받을 수 있게끔 한다. 포트번호를 의미

하지만 이렇게 매번 split() 을 써서 이런 작업을 하나하나 걸어주기 쉽지 않다.

그래서 사용하는 Express 서드파티모듈

Node.js가 자바스크립트 실행환경이라면

Express 는 node.js에서 실행될 서버 프로그램을 간편하게 만들 수 있게 해주는 프레임워크이다.

const http = require('http');

const express = require('express');

const app = express();

const users = ['Tom', 'Andy', 'Jessica', 'Pual'];

// // Arrow Function 형태로 바꾸기, 상수 const로 바꾸기
// const server = http.createServer((request, response) => {
//   if(request.url === '/'){
//     response.end('<h1>Welcome!</h1>');
//   } else if(request.url === '/users') {
//     response.end(`<h1>${user}</h1>`);
//   } else if (request.url.split('/')[1] === 'users') {
//     const userIdx = request.url.split('/')[2];
//     const userName = users[userIdx - 1];
//     // 템플릿 문자열 사용
//     response.end(`<h1>${userName}</h1>`)
//   } else {
//     response.end('<h1>Page Not Available</h1>')
//   }
// });

// server.listen(3000); // 외부로 부터 요청을 받을 수 있게끔 한다. 포트번호를 의미

app.get('/', (request, response) => {
  response.end('<h1>Welcome!</h1>');
});

app.get('/users', (request, response) => {
  response.end(`<h1>${users}</h1>`);
});

app.get('/users/:id', (request, response) => { // split을 사용하지 않아도 된다.
  const userName = users[request.params.id - 1];
  response.end(`<h1>${userName}</h1>`);
});

app.get('*', (request, response) => { // '*'은 모든 path를 의미하며 위의 코드를 거쳐서 해당사항 없으면 이 코드를 실행
  response.end('<h1>Page Not Available!</h1>');
});

app.listen(3000);

'WEB > Node.js' 카테고리의 다른 글

패키지 전역 설치 (nodemon)  (0) 2021.03.05
서드파티 모듈 (심화)  (0) 2021.03.05
JS 비동기 프로그래밍  (2) 2021.01.13
서드파티(3rd party) 모듈  (0) 2021.01.11
JS 와 브라우저의 차이  (0) 2021.01.11
Comments