DevLog

Node Sever만들기 본문

🤔 TIL(Today I Learned)

Node Sever만들기

Seungjae Lee 2021. 9. 8. 22:53
const http = require('http');

const PORT = 5000;

const ip = 'localhost';

const server = http.createServer((request, response) => {
  const { headers, method, url } = request;

  console.log('headers:')
  console.log(headers)
  console.log(`method: ${method}, url: ${url}`);

  //TODO: method가 options일 때 
  if (method === "OPTIONS") {
    // CORS 설정을 돌려줘야 한다.
    response.writeHead(204, defaultCorsHeader);
    response.end('hello mini-server sprints');
  }

  //TODO: method가 POST 이고 url이 '/upper'일 때
  if (request.method === 'POST' && request.url === '/upper') {
    console.log(`http request method is ${request.method}, url is ${request.url}`);

    let body = [];
    request.on('data', (chunk) => {
      body.push(chunk);
    }).on('end', () => {
      body = Buffer.concat(body).toString().toUpperCase();
      response.writeHead(200, defaultCorsHeader);
      response.end(body);
    });
  }

  //TODO: method가 POST 이고 url이 '/lower'일 때
  else if (request.method === 'POST' && request.url === '/lower') {
    console.log(`http request method is ${request.method}, url is ${request.url}`);

    let body = [];
    request.on('data', (chunk) => {
      body.push(chunk);
    }).on('end', () => {
      body = Buffer.concat(body).toString().toLowerCase();
      response.writeHead(200, defaultCorsHeader);
      response.end(body);
    });
  } else {
    response.statusCode = 404;
    response.end();
  }

  // response.writeHead(200, defaultCorsHeader);
  // response.end('hello mini-server sprints');
  // =====================================================

  // console.log(
  //   `http request method is ${request.method}, url is ${request.url}`
  // );
});

server.listen(PORT, ip, () => {
  console.log(`http server listen on ${ip}:${PORT}`);
});

const defaultCorsHeader = {
  'Access-Control-Allow-Origin': '*',
  'Access-Control-Allow-Methods': 'GET, POST, PUT, DELETE, OPTIONS',
  'Access-Control-Allow-Headers': 'Content-Type, Accept',
  'Access-Control-Max-Age': 10
};
Comments