[Node] http 모듈

<p>[Node] http 모듈

서버를 다룰 수 있는 http 모듈에 대해 알아본다.

노드에서 웹 서버를 만들기 위해서는 기본적으로 http 모듈을 이용한다.
http 모듈은 노드에 기본으로 들어있는 내장모듈이기에 별도의 설치는 필요없다.

http 모듈로 서버 생성 및 시작


우선 서버 객체를 생성한 뒤 listen()함수를 통해 포트번호, IP 등을 설정하고 서버를 시작한다.
listen()함수를 호출하면 서버가 시작되고 요청을 받을 수 있는 대기상태가 된다.
이후 http://localhost:8080의 url로 접속해보면 콘솔창에 요청과 접속에 따른 메세지가 출력된다.

서버 객체에서 주로 사용하는 이벤트들은 다음과 같다.

connection  // 클라이언트가 접속하여 연결이 만들어질때 발생
request     // 클라이언트가 요청할 떄 발생
close       // 서버 종료시 발생

이 외에도 많은 이벤트가 있지만, 클라이언트의 접속과 요청에 따른 처리가 가능한 connnectionrequest이벤트가 가장 많이 사용된다.

클라이언트에 응답 보내기

java의 Servlet에서 response객체를 통해 응답을 보내듯 node에서도 res객체에 담아 보낼 수 있다.
JSP&Servlet에서는 요청(Request), 응답(Response)이라면, node에서는 요청(req), 응답(res)이 된다.


res객체의 write()함수를 사용해 응답을 작성하고 end()를 통해 응답을 보낸다.
request이벤트 리스너를 등록해 처리하는게 일반적이지만, 서버 객체 생성시에 처리해도 같은 결과를 얻을 수 있다.

파일 응답 보내기

res객체를 이용하면 파일을 읽어 응답 보내는것도 간단히 처리할 수 있다.
fs 모듈을 이용해 헤더를 설정하고 파일을 읽은 뒤 res에 파일을 써내보내면 된다.


예제의 윗 부분은 응답에 헤더를 설정해 보낼 수 있지만,
아랫 부분의 경우엔 헤더를 설정해 보낼 수 없기 때문에 필요할 경우에만 사용해야한다.

파일을 버퍼에 담아 일부분씩만 보내는 방법도 있다.


여기선 일정 버퍼의 크기만큼 파일을 읽은 뒤 쓰는 작업을 반복한다.

다른 사이트의 데이터 가져오기

http 모듈은 서버기능 이외에 클라이언트 기능도 제공한다.
이 클라이언트 기능을 사용하면 다른 host에 요청을 보내고, 이에 따른 응답을 받아올 수 있다.

요청은 GET 또는 POST방식으로 보낼 수 있는데 GET방식으로 보내는 방법은 아래와 같다.


http 객체의 get()함수를 이용해 get방식으로 요청을 보낸다.
get()의 첫 번째 파라미터로는 요청을 보낼 사이트의 정보가 담겨있고, 이 정보를 바탕으로 GET방식 요청을 보내게 된다.

요청을 보낸 사이트로부터 응답을 받을 때에 data 이벤트가 발생한다.
data 이벤트는 용량에 따라 여러번 발생할 수 있기 때문에 받아온 데이터를 resData에 담아둔다.
end 이벤트는 모든 응답을 받았을 때에 발생하기 때문에 이 떄의 resData는 모든 응답을 받은 상태가 된다.

POST방식으로 요청을 보낼 경우에는 request()함수를 사용한다.
POST방식의 경우엔 요청 헤더와 본문을 모두 직접 설정해야한다.


© 2018. All rights reserved. Polog by Soowan Kim.

Powered by Hydejack v8.2.0