본문 바로가기

Node.js공부/Node.js 원활한 사용을 위한 세부 공부

클라이언트 요청시 서버 개념들

반응형

클라이언트가 웹 서버에 요청할 때 발생하는 이벤트 처리하기

만약 웹 브라우저가 이 웹 서버에 접속한 후 데이터를 요청하면 그때마다 적절한 이벤트가 발생하므로 다양한 상황에 맞추어 콜백함수를 각각 등록하면 된다. 다음은 서버 객체에서 사용할 수 있는 주요 이벤트들이다.


이벤트 이름 

설명 

connection 

클라이언트가 접속하여 연결이 만들어질 대 발생하는 이벤트입니다. 

request 

클라이언트가 요청할 때 발생하는 이벤트입니다. 

close 

서버를 종료할 때 발생하는 이벤트입니다. 


웹 브라우저와 같은 클라이언트가 웹 서버에 연결되면 connection 이벤트가 발생합니다. 그러므로 on() 메소드를 호출할 때 첫 번째 파라미터로 connection 이벤트 이름을 전달하고, 두 번째 파라미터로 콜백함수로 전달합니다. 연결이 만들어져서 콜백 함수가 호출될 때는 Socket객체가 파라미터로 전달됩니다. 이 객체는 클라이언트 연결 정보를 담고 있으므로 address() 메소드를 호출하여 클라이언트의 IP와 포트 정보를 확인할 수 있습니다.


클라이언트가 특정 패스로 요청을 하면 request 이벤트가 발생합니다. 콜백 메소드로 전달되는 요청 객체를 console.dir() 메소드로 화면에 출력하면 어떤 정보가 들어있는지 확인 할 수 있습니다.


request 이벤트 처리 중 res객체의 writeHead(), write(), end() 메소드를 사용하면 클라이언트로 응답을 보낼 수 있습니다. end()메소드는 응답을 모두 내보냈다는 것을 의미하며, 일반적으로는 end()메소드가 호출 될 때 클라이언트로 응답을 전송합니다. 



미들웨어로 클라이언트에게 응답보내기

익스프레스에서는 미들웨어 이외에 라우터도 사용하는데 미들웨어나 라우터는 하나의 독립된 기능을 가진 함수라고 생각할 수 있습니다. 다시 말해, 익스프레스에서는 웹 요청과 응답에 관한 정보를 사용해 필요한 처리를 진행할 수 있도록 독립된 함수로 분리합니다. 이렇게 분리한 각각의 것들을 미들웨어라고 부릅니다. 


예를 들어, 클라이언트에서 요청했을 때 로그를 남기는 간단한 기능을 함수로 만든 후 use() 메소드를 사용해 미들웨어로 등록해 두면, 모든 클라이언트 요청이 이 미들웨어를 거치면서 로그를 남기게 됩니다. 각각의 미들웨어는 next() 메소드를 호출하여 다음 미들웨어가 처리할 수 있도록 순서를 넘길 수 있습니다.


라우터는 클라이언트의 요청 패스를 보고 이 요청 정보를 처리할 수 있는 곳으로 기능을 전달해 주는 역할을 합니다. 이러한 역할을 바로 라우팅이라고 하는데요, 클라이언트의 요청 패스에 따라 각각을 담당하는 함수로 분리시키는 것입니다. 



익스프레스 요청 객체와 응답 객체 알아보기

메소드 이름 

설명 

send([body]) 

클라이언트에 응답 데이터를 보냅니다. 전달할 수 있는 데이터는 HTML 문자열, Buffer 객체, JSON 객체, JSON 배열입니다. 

status([code]) 

HTTP 상태코드를 반환합니다. 상태 코드는 end() 나 send() 같은 전송 메소드를 추가로 호출해야 전송할 수 있습니다. 

 sendStatus(statusCode)

HTTP 상태 코드를 반환합니다. 상태 코드는 상태 메시지와 함께 전소욉니다. 

redirect([status,] path) 

웹 페이지 경로를 강제로 이동시킵니다. 

render(view, [,localhost][, callback]) 

뷰 엔진을 사용해 문서를 만든 후 전송합니다. 


res.send({name: '코엘리야', age: 30});


위와 같이 코드를 작성하실 수 있습니다.




반응형