이전글

NodeJS 웹서버에서 HTTP POST방식 요청하기
이전 글에서는 웹 클라이언트 개요와 NodeJS에서 get방식으로 웹서버에 요청하는 방법을 알아 보았습니다.
이번 글에서는 웹 클라이언트로서 HTTP POST 요청을 하는 방법을 알아보도록 하겠습니다.


예를들어 웹서버와 첨부파일을 관리하는 파일 서버가 따로 존재한다면 사용자는 웹서버를 통해 첨부파일을 저장하지만 이를 받은 웹서버는 실제로는 파일 서버에게 POST요청을 통해서 파일을 저장할 수 있습니다.


http모듈을 통한 post 요청
http 모듈을 통해 post 요청하는 방법은 이전글에서 봤던 get 방식 요청보다 더 복잡한데, post 요청에는 request() 메서드를 이용합니다.
post 요청 방식은 다음과 같은 순서로 진행됩니다.
아래 순서를 바탕으로 소스를 따라가면 조금 더 이해하기 편할것입니다.

1. http.request() 를 통해 요청 이벤트에 대한 콜백함수를 바인딩하고 요청객체를 얻습니다.
2. post 요청으로 넘길 데이터를 지정하고 데이터에 대한 MIME Type 과 데이터의 길이를 HTTP 요청 헤더에 지정합니다.
3. 요청객체의 write()와 end() 함수를 통해 post 요청을 전송합니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
var http = require('http');
 
 
var opts = {
    host: 'www.myFileServer.com'
    port: 80,
    method: 'POST',
    path: '/',
    headers: {}
};
 
 
 
 
var resData = '';
var req = http.request(opts, function(res) {
    // 요청에 대한 응답 이벤트
    res.on('data'function(chunk) {
        resData += chunk;
    });
    
    // 요청에 대한 응답 종료 이벤트
    res.on('end'function() {
        console.log(resData);
    });
});
 
 
opts.headers['Content-Type'= 'image/png'//post로 넘길 파일 MIME TYPE을 지정
req.data = "file 데이터 저장"//실제로는 파일 데이터를 저장한다.
opts.headers['Content-Length'= req.data.length;
 
 
//에러처리
req.on('error'function(err) {
    console.log(err.message);
});
 
 
// 요청 전송
req.write(req.data);
req.end();
cs

위 예제에서 나오는 파일서버 및 요청 데이터는 예제를 위한 임시 데이터이므로 실제로는 오류가 발생할 것입니다.
실제로는 파일을 저장해줄 수 있는 서버와 req.data 부분에 파일을 입력받아 넘기면 post 방식으로 파일서버에 넘길 수 있습니다.


실무에서는 http 모듈보다 express 모듈을 사용합니다. express 모듈또한 http 모듈을 기반을 하여 만들어진 모듈이지만 http 모듈의 불편한 사용을 훨씬 간단하고 편하게 사용하도록 되어있습니다. 때문에 http 모듈의 사용법은 이러이러한 것이 있다 정도만 익힌 후 정말로 필요한 시점에 더욱 자세히 알아보는 것도 좋은 방법일 것 입니다.
블로그 이미지

도로락

IT, 프로그래밍, 컴퓨터 활용 정보 등을 위한 블로그

,