Node.js HTTP module
[server 객체의 메서드]
createServer() : server객체 생성
listen() : 서버 실행
close() : 서버 종료
서버 생성 및 종료 예)
//모듈 추출
var http = require('http');
var fs = require('fs'); // <-- html 파일 읽기 용도
var hostname = '호스트 입력';
var port = '포트 입력';
//웹 서버 생성
http.createServer(function(req, res){
//html 파일 읽기
fs.readFile('파일명.html', function(err, data){
res.writeHead(200, {
'Content-Type': 'text/html'
});
res.end(data);
});
}).listen(port, hostname);
console.log('서버 시작 ://'+hostname+':'+port);
//10초 후 서버 종료
var test = function(){
server.close();
};
setTimeout(test, 10000);
[response 객체의 메서드]
writeHead() : 응답 헤더
end() : 본문 작성
writeHead()의 ‘Content-Type’에 따라 이미지, 비디오 파일 등을 제공해 줄수 있다.
'Content-Type' : 'text/plain' // <-- 기본적인 텍스트
'Content-Type' : 'text/html' // <-- html 파일
'Content-Type' : 'text/xml' // <-- xml 파일
'Content-Type' : 'image/jpeg' // <-- jpg/jpeg 이미지 파일
'Content-Type' : 'image/png' // <-- png 이미지 파일
'Content-Type' : 'audio/mp3' // <-- mp3 파일 등...
[server 객체의 이벤트]
request : 클라이언트가 요청할 때 발생하는 이벤트
connection : 클라이언트가 접속할 때 발생하는 이벤트
close : 서버가 종료될 때 발생하는 이벤트
checkContinue : 클라이언트가 지속적인 연결중일때 발생하는 이벤트
upgrade : 클라이언트가 http 업그레이드를 요청하면 발생하는 이벤트
clientError : 클라이언트에서 오류 발생시 발생하는 이벤트
server 객체에 이벤트 연결 예)
server.on('request', function(code){
console.log('이벤트 연결~');
});
server.on('connection', function(){
console.log('클라이언트가 접속');
});
server.on('close', function(){
console.log('서버 종료');
});
[request 객체]
request 객체의 속성
method : 클라이언트 요청 방식
url : 클라이언트가 요청한 url
headers : 요청 메시지 헤더
trailers : 요청 메시지 트레일러
httpVersion : http프로토콜 버전
request 객체의 url 속성을 사용한 페이지 구분 예)
//url 모듈 추출
var url = require('url');
//서버 생성 및 실행
http.createServer(function(req, res){
//pathname 변수 선언
var pathname = url.parse(req.url).pathname;
//페이지 구분
if( pathname == '/' ){
}else if( pathname == '/board' ){
}
}).listen(port, hostname);
request 객체의 method 속성을 사용한 페이지 구분 예)
//서버 생성 및 실행
http.createServer(function(req, res){
if( req.method == 'get' ){
//요청 매게변수 추출
var query = url.parse(req.url).query;
res.writeHead(200, {
'Content-Type': 'text/html'
});
res.end('
'+ JSON.stringfy(query) +'
'); // <--get 요청 매개변수 값 출력
}else if( req.method == 'post' ){
//post 요청 데이터는 request 이벤트 발생 후 request 객체의 data 이벤트로 전달받는다.
req.on('data', function(data){
res.writeHead(200, {
'Content-Type': 'text/html'
});
res.end('
'+ data +'
'); // <-- post 요청 값 출력
});
}
}).listen(port, hostname);
[쿠키 생성]
response 객체를 사용하여 클라이언트에 쿠키를 할당해주고, request 객체를 사용하여 쿠키를 읽어올 수 있다.
쿠키 생성 및 쿠키 읽기 예)
http.createServer(function(req, res){
//get cookie
var cookie = req.headers.cookie;
//set cookie
res.writeHead(200, {
'Content-Type': 'text/text' ,
'Set-Cookie' : ['test_cookie = test'] // <-- test_cookie 쿠키생성
});
res.end('
'+ JSON.stringfy(cookie) +'
'); // <-- 쿠키 출력
}).listen(port, hostname);