[회고] Week 10, S7. Server & Node - Mini Node Server

Nammm·2021년 6월 28일
0

뭐야! 됫다 안됫다 해!?

페어분과 코드도 똑같았는데, 도대체가 작동이 안됫다.
내 코드를 그대로 드려도, 페어분께서는 잘만 된다하더라.

어느 부분을 고치고나서 나도 잘 작동 됫었는데, 오늘 잠깐 혹여나 하고 들렀던게 약 1시간동안 내 발목을 잡았다.

처음 서버 키면 정상!

현재 코드는 아래와 같다.

const http = require('http');

const PORT = 5000;

const ip = 'localhost';

const server = http.createServer((request, response) => {


// Preflight Request
  if (request.method === 'OPTIONS') {
    response.writeHead(200, defaultCorsHeader);
    response.end();
  }

  if(request.method === 'POST' && request.url === '/upper' /* method is post and url is upper */) {
    let body = [];
    request.on('data', (chunk) => {
      body.push(chunk);
    }).on('end', () => {
      body = Buffer.concat(body).toString().toUpperCase();
      response.writeHead(200, defaultCorsHeader);
      response.end(body);
    });
  } else if (request.method === 'POST' && request.url === '/lower' /* method is post and url is lower */) {
    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 { //error -> send Header
    response.writeHead(404, defaultCorsHeader);
    response.end("err");
  }
});

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
};

module.exports = server

보이는가!?, 보인다면 당신은 이미 능력자!

그렇다 마지막 404 부분이 문제였다!

현재는 이 상태인데,

else { //error -> send Header
    response.writeHead(404, defaultCorsHeader);
    response.end("err");
  }

이렇게 바꿧더니,

else { //error -> send Header
    response.on('error', (err) => {
      response.writeHead(400, defaultCorsHeader);
      console.error(err);
    });
  }

작동이 된다!

방금 한곳 더찾았다!

  console.log(
    `http request method is ${request.method}, url is ${request.url}`
  );
  response.writeHead(200, defaultCorsHeader);
  response.end('hello mini-server sprints');

네트워크 탭 외에도, 서버가 통쾌하게 켜진 그 부분을 보기위해 남겨두었던 코드인데... 요기도 문제를 일으킨다.

이 두곳이 완벽하게 이해가 되진 않는다. 자정을 향해가는 시간인지라, 우선 오늘은 여까지!

0개의 댓글