코드작성
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 관련 기본 헤더