페어분과 코드도 똑같았는데, 도대체가 작동이 안됫다.
내 코드를 그대로 드려도, 페어분께서는 잘만 된다하더라.
어느 부분을 고치고나서 나도 잘 작동 됫었는데, 오늘 잠깐 혹여나 하고 들렀던게 약 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
보이는가!?, 보인다면 당신은 이미 능력자!
현재는 이 상태인데,
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');
네트워크 탭 외에도, 서버가 통쾌하게 켜진 그 부분을 보기위해 남겨두었던 코드인데... 요기도 문제를 일으킨다.
이 두곳이 완벽하게 이해가 되진 않는다. 자정을 향해가는 시간인지라, 우선 오늘은 여까지!