Node Server

이건우·2021년 7월 3일
0
post-thumbnail
post-custom-banner

노드 서버에서 요청 메서드 처리하는 방법을 알아보겠습니다

이번 스프린트 에서는 upper와 lower server를 구현해보았고 그 구현 과정을 설명 해보겠습니다

let http = require('http')
const PORT = 3000;
const IP = 'localhost'


const server = http.createServer((request, response) => {
    if(request.method === 'POST'){

    }
   if(request.method === 'OPTION'){

    }

})

이런식으로 메소드의 구간을 나누어서 요청되는 메소드가 어떤 메소드인지에 따라 알맞은 값을 줄 수 있습니다

그 다음으로 POST 메소드로 요청이 들어온 경우에는 우리가 구현하고자 했던 /upper 와 /lower로 라우터를 정의 해줄 수 있습니다
러우터란 ?
URI(경로) 및 특정한 HTTP(Hyper Text Transfet Protocol) 요청 메소드(GET,POST)의 클라이언트 요청에 응답하는 방법을 결정하고 각 라우트는 하나 이상의 핸들러 함수를 가질 수 있고, 라우트가 일치할 때 실행됩니다.

//GET 방식의 METHOD
app.get('/', function (req, res) {
	res.send("hello getMethod")
})

//POST 방식의 MEHTOD
app.post('/', function (req, res) {
	res.send("Hello postMethod")
})

라우터의 사용 예시

const server = http.createServer((request, response) => {
if(request.method === "POST"){
    if(request.url === '/lower'){


    }else
    if(request.url === '/upper'){


    }
}

if(request.method === "OPTION"){

}
});

이렇게 라우터로 POST 요청으로 lower 요청이 왔을때와 upper 요청이 들어왔을때를 만들어 줄 수 있습니다
if POST요청이 들어왔을때 => 그안에서의 lower 나 upper가 들어왔을 때 를 구현 해준 것입니다

const server = http.createServer((request, response) => {
if(request.method === "POST"){
    if(request.url === '/lower'){
    let data = ''
    
    request.on('data',(chunk)=>{ 
    data = data + chunk      
    })

    request.on('end',()=>{ 
    data
    })

    }else
    if(request.url === '/upper'){


    }


if(request.method === "OPTION"){

}
});

그 다음에는 request on 을 이용하여 데이터를 받아옵니다 .
on('data', 콜백), on('end', 콜백) 으로 각각 request에 data가 있을 경우 처리를 해주는 부분과 data처리가 끝났음을 알려주는 부분으로 작성해줍니다 on 이라는 데이터 키워드를 넣어 주면 chunk 를 통해 바디의 값을 받아 올 수 있습니다 .
여기 까지 해주면 데이터를 어떯게 바꾸어 줄건지와 상태에 응답을 해주는 것 과 애러 처리를 해주면 됩니다

지금까지의 내용을 총 정리해서 부분부분 분리 해서 보자면
이렇게 네가지의 형태로 볼 수 있습니다

//-------------------------------------------------------------------------------------------
// 첫번째로 서버의 기본 구성과 서버를 만들어준 부분 
let http = require('http')
const PORT = 3000;
const IP = 'localhost'

const server = http.createServer((request, response) => {
//-------------------------------------------------------------------------------------------
//if문을 통해 서버에 요청된 메소드를 확인하여 그 메소드가 요청하는 값을 전달 해주는 부분 

if(request.method === "POST"){
  if(request.url === '/lower'){//post 요청으로 lower이 들어왔을때 데이터를 처리해주는 부분 
    let data = "";
    request.on('data',(chunk)=>{  //요청으로 들어온데이터를 chunk로 바디값을 받아와준 부분 
      data = data + chunk       
    })

    request.on('end',()=>{ //이 요청이 끝날때 callback으로 요청을 처리해준부분 
      data = data.toLowerCase() //lower가 들어왔으니 데이터를 lower 해준 부분 
      response.writeHead(201, defaultCorsHeader);//데이터의 상태코드와 cors응답 , 헤더를 넣어주고
      response.end(data)//마지막에 응답을 하기위한 메서드 end를 써주며 데이터를 전달 해줍니다 
    })
//-------------------------------------------------------------------------------------------

  }else 
  if(request.url === '/upper'){ //이번에는 uppet가 들어온 경우에는 똑같은 동작을 하지만 
    let data = "";

    request.on('data',(chunk)=>{ 
      data = data + chunk       

    request.on('end',()=>{ 
      data = data.toUpperCase() //데이터를 upperCase로 만들어주기만하면 됩니다 
      response.writeHead(201, defaultCorsHeader);
      response.end(data)
    })
//-------------------------------------------------------------------------------------------
  }else{
    response.writeHead(404, defaultCorsHeader);//그리고 그외에 다른 post요청이 들어왔을 때에는 애러를 처리해줍니다 404의 상태 코드로 애러라는것을 명시해주고 
    response.end("Not found 404");
    //데이터를 전달 해주는 부분에서는 애러메세지를 띄워줍니다 
  }
}
profile
주니어 개발자 이건우 입니다 .
post-custom-banner

0개의 댓글