Software Development/Web

[Node.js]5.HTTP

huiyu 2015. 5. 23. 11:04


1. HTTP란?

 -HyperText Transfer Protocal, WWW상에서 서버와 클라이언트 간에 데이터를 어떻게 주고 받을 수 있는지를 정의한 통신 규약

 -Hypertext란 개별 정보들을 링크를 이용해 유기적으로 연결시킴으로써 비연속적, 비선형적 체계로 구성한 전자적 텍스트

 -http://ko.wikipedia.org/wiki/HTTP


2. HTTP 모듈

 - Node.js는 HTTP모듈을 기본 내장 모듈로 제공, HTTP 기반 웹 어플리케이션을 쉽게 개발할 수 있게 해줌.


3. HTTP Server

 - 기본소스

1
2
3
4
5
6
7
var http = require('http');
http.createServer(function (req, res) {
  res.writeHead(200, {'Content-Type''text/plain'});
  res.end('Hello World\n');
}).listen(1337'127.0.0.1');
console.log('Server running at http://127.0.0.1:1337/');
 
cs

 - HTTP모듈이 Node.js 코더로부터 요청(require)되어졌고, http라는 변수에 할당되어 소스에서 활용 가능한 상태가 된다.

 - http.createServer를 호출하여 신규 웹 서버용 객체 생성

 - http.createServer의 인자값에 익명 함수를 선언하여 매번 HTTP request가 들어올 때 어떻게 동작할지 명시.

 - http.createServer()를 통해 반환된 객체는 listen함수를 호출. 첫번째 인자는 서버의 리스팅 포트, 두번째 인자는 IP


4. HTTP Client

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
var http = require('http');
var options = {
        hostname: '127.0.0.1',
        port : 1337,
        path: '/',
        method: 'POST'
};
var req = http.request(options, function(res){
    console.log('STATUS: ' + res.statusCode);
    console.log('HEADERS: ' + JSON.stringify(res.headers));
    res.setEncoding('utf8');
    res.on('data'function  (chunk){
        console.log('BODY: ' + chunk);
    });
});
 
req.on('error'function(e){
    console.log('problem with request: '+ e.message);
});
 
req.write('data\n');
req.write('data\n');
req.end();
cs

- 서버 생성시 불러온 HTTP모듈 불러와 'http'변수에 바인딩

- options를 통해 옵션값 세팅

  • host : 도메인명 혹은 서버의 IP주소, 기본 값은 'localhost'
  • hostname : 호스트명을 url.parse()를 통해 파싱할 때 사용
  • port : 서버의 포트, 기본 80
  • localAddress : 네트워크 커넥션을 형성하는 로컬 인터페이스 주소
  • socketPath : 유닉스 도메인 소켓
  • method : HTTP 요청 함수명. 기본 'GET'
  • headers : 요청 헤더값을 포함하고 있는 객체
  • auth : 기본 인증 방식.
  • agent : HTTP Client 요청 시 사용하는 소켓 풀
- request함수 호출, 인자로 options값과 어떻게 동작할지 명시한 콜백 함수


728x90