코드작성

Mini Node Server 과제

Heemok 2023. 6. 2. 16:00

2023-06-02(금)

 

 
const http = require('http'); // http 모듈

const PORT = 4999;  // 포트번호

const ip = 'localhost'; // 로컬 호스트

const server = http.createServer((request, response) => {
  if (request.method === 'OPTIONS') {  // 만약 리퀘스트 메소드가 OPTIONS라면 해당 코드를 실행
    response.writeHead(200, defaultCorsHeader); // 200 상태 코드와 CORS 헤더로 응답
    response.end();
    return;
  }

  let body = []; // 요청의 본문 데이터를 저장할 배열

  if (request.method === 'POST' && request.url === '/lower') { // POST 메소드이고 URL이 '/lower'인 경우
    request.on('data', (chunk) => {
      body.push(chunk); // 요청 데이터를 배열에 저장
    }).on('end', () => {
      body = Buffer.concat(body).toString().toLowerCase(); // 배열의 데이터를 결합하여 소문자로 변환
      response.writeHead(200, defaultCorsHeader); // 200 상태 코드와 CORS 헤더로 응답
      response.end(body); // 소문자로 변환된 데이터를 응답
      return;
    });
  }
  else if (request.method === 'POST' && request.url === '/upper') { // POST 메소드이고 URL이 '/upper'인 경우
    request.on('data', (chunk) => {
      body.push(chunk); // 요청 데이터를 배열에 저장
    }).on('end', () => {
      body = Buffer.concat(body).toString().toUpperCase(); // 배열의 데이터를 결합하여 대문자로 변환
      response.writeHead(200, defaultCorsHeader); // 200 상태 코드와 CORS 헤더로 응답
      response.end(body); // 대문자로 변환된 데이터를 응답
      return;
    });
  }
  else {
    response.statusCode = 404; // 요청이 올바르지 않은 경우 404 상태 코드로 응답
    response.end();
  }
}).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
}; // CORS 관련 기본 헤더