Mini Node Server

임성은·2022년 12월 8일
0

사실 이 코드 말고도 전에 시도한 무수한 삽질을 날리지 말 것을 조금 후회했다.
노드몬이란 개념자체가 생소하였는데 서버 먼저 실행하고 노드몬 인스톨만 하고 부랴부랴 시작하다보니 ' Uncaught (in promise) SyntaxError: Unexpected token 'h', "hello mini"... is not valid JSON'오류가 딱...

오류해결 전엔 제대로 된 코드여야 사라진다는 말을 듣고 '아 이코드는 실패인갑다' 하고 싹 날리며 했지만..ㅠㅠ 계속 된 실패.

이유도 모르고 있다가 생각조차 못했던 노드몬으로 서버 실행해주어야 한다는 페어의 조언 덕분에 겨우 해결완료!!!!

해결해주신 페어님께 무한 감사!!!!ㅠㅠ

.
.
.

const http = require('http');

const PORT = 4999;

const ip = 'localhost';

const server = http.createServer((request, response) => {
 if(request.method === 'OPTIONS'){
  response.writeHead(200, defaultCorsHeader)
  response.end();
 }
-----------------------------------------------------------------
const http = require('http');

http.createServer((request, response) => {
  let body = [];
  request.on('data', (chunk) => {      //청크! 덩어리.
    body.push(chunk);                  //비어있던 body 배열에 푸쉬!
  }).on('end', () => {                
    body = Buffer.concat(body).toString();///밑에 buffer설명
    response.end(body);
  });
}).listen(8080);

 위는 공신문서 HTTP 트랜잭션의 예 이다.
 
------------------------------------------------------------------
buffer란??
한 작업이 데이터를 처리하는 시간이 데이터가 도착하는 시간보다 더 빠르다면, 먼저 도착한 데이터는 처리되기 전에 어느정도의 데이터량이 쌓일때까지 기다려야 합니다.

바로 그 기다리는 영역이 !!buffer!! 입니다
-----------------------------------------------------------------
if(request.method === 'POST'){ //두 조건 모두 post일때 이다.

  let body = [];
  request.on('data',(chunk)=>{
    body.push(chunk);
  }).on('end',()=>{
    body = Buffer.concat(body).toString();
    response.writeHead(200,defaultCorsHeader); //요까지 위의 예를 그대로 참고하여 적어준다, 응답끝을 주지말고 Status코드를 넣어준다.


console.log 찍었을때 나온 모습 ^

위에 그대로 이어서.....
.
.

 if(request.url === '/upper'){     // Request URL가 upper로 온다면?
   response.end(body.toUpperCase()); >>>대문자변환실행 후 응답끝-!
 }else if(request.url === '/lower'){//Request URL가 lower로 온다면?
   response.end(body.toLowerCase()); >>>소문자변환실행 후 응답 끝-!
 }
 else{                                        //아닌 것은 다
 response.writeHead(404, defaultCorsHeader);  //404 응 답 끝-!
  response.end();
 }
})
}

});

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

노드몬...


저 대로 순서대로 했어야 노드몬으로 서버 실행했을텐데 미니 서버 한다는 생각에 성급했던 나.
순서대로 잘 따라했어야지! 다음부터 잘 따라하자!!..

profile
개발자의 길에 당차게 들어서다!!

0개의 댓글