티스토리 뷰
HTTP와 관련된 내용은 다른 포스팅에서 자세히 적는게 나을듯 하다.
이 포스팅에서는 노드 서버 객체를 생성해서 서버를 띄우고
간단하게 url 값을 이용해서 띄우는 간단한 실습했던 내용을 적게될 것 같다.
웹 서버가 하는 일은 요청을 받고 그에 대한 응답을 전달하는 것.
var http = require('http');
var server = http.createServer(function(request, response) {
});
server.on('request', function(code) { // 클라이언트에서 요청 발생
console.log('Request ON');
});
server.on('connection', function(code) { // 클라이언트에서 접속 실행
console.log('Connection ON');
});
server.on('close', function(code) { // 서버 종료
console.log('Close ON');
});
server.listen(12345, function() {
console.log('웹서버 실행 중.. 주소 : 127.0.0.1:12345')
});
server 객체는 createServer() 메소드를 통해 생성하게 된다.
listen() 메소드는 listen(포트번호)로 형태의 메소드로
서버를 실행시킨다.
위의 예제 작성 후
브라우저 주소창에 127.0.0.1:12345 로 실행 시 실제 서버가 실행하는 것을 확인할 수 있다.
위의 예제에서 on 메소드는 이전 장에서 보았던
이벤트 핸들링을 하는 메소드와 동일하니
request, connection, close 이벤트를 처리하는 것이라는 점은 쉽게 알 수 있다.
resonse 객체
서버가 실행만 된다고 해서 웹페이지가 띄워지는 것이 아니다.
response 객체는 서버에 요청 시 어떤 값을 노출할지에 대한 내용을 담고 있는 객체다.
서버 요청 시 response에 대한 값을 지정하지 않으면
127.0.0.1:12345로 접속을 했어도 별 다른 동작이 일어나지 않을 것이다.
다음은 클라이언트 요청 시
응답 값을 지정해주어 화면에 Hello MY World!!!가 출력되도록 만드는 예제다.
var http = require('http');
var server = http.createServer(function(request, response) {
response.writeHead(200, {'Content-Type': 'text/html'});
response.end('<h1>Hello MY World!!!</h1>')
});
server.listen(12345, function() {
console.log('웹서버 실행 중.. 주소 : 127.0.0.1:12345')
});
writeHead()는 응답 헤더를 작성하여
응답 코드 값과 기타 정보를 응답 헤더에 적는다.
end()는 응답 본문 값을 담는다.
응답 코드는 요청 값에 대한 응답 상황을 의미하며,
간단하게 정의하자면 다음과 같다.
1XX |
처리 중 |
2XX |
성공 |
3XX |
리다이렉트 |
4XX |
클라이언트 오류 |
5XX |
서버 오류 |
response의 헤더에는 쿠키 값을 지정할 수 있다.
다음은 헤더에 쿠키 값을 지정하는 예시다.
var fs = require('fs');
var http = require('http');
var expireDate = new Date();
expireDate.setDate(expireDate.getDate() + 7);
http.createServer(function (request, response) {
response.writeHead(200, {
'Content-Type': 'text/html',
'Set-Cookie': ['lunch=bob', 'dinner=Chicken!;Expires =' + expireDate.toUTCString()]
});
response.end(request.headers.cookie);
})
}).listen(12345, function() {
console.log('웹 서버 실행 중..');
})
(expires 값은 쿠키 값의 유효 기간을 설정하는 부분)
쿠키 정보를 브라우저 개발자 모드에서도 확인할 수 있다.
F12 > Application > Cookies
request 객체
request 객체를 통해서 사용자의 요청이 일어날 때의 정보를 확인할 수 있다.
var http = require('http');
var fs = require('fs');
var url = require('url');
http.createServer(function(request, response) {
var pathname = url.parse(request.url).pathname;
var query = url.parse(request.url, true).query;
var cookie = request.headers.cookie;
if ( pathname == '/') {
var body = "";
if (query) {
body += 'query : ' + JSON.stringify(query);
}
if (cookie) {
body += "cookie : " + JSON.stringify(cookie);
}
response.writeHead(200, {'Content-Type':'text/html',
'Set-Cookie': ['fruit=banana', 'location=seoul']})
response.end(body);
} else if (pathname == '/otherPage') {
fs.readFile('./HTMLPage.html', function(error, data) {
response.writeHead(200, {'Content-Type' : 'text/html'});
response.end(data);
});
} else {
response.writeHead(302, {'Location': 'http://www.naver.com'});
response.end()
}
}).listen(12345, function() {
console.log('서버 접속 완료.');
});
위의 예시는 127.0.0.1:12345로 접근하게 되면
url의 parameter 값이 있으면 노출시키다.
또한 url path 값이 otherPage인 경우에는
다른 html 파일이 출력되도록 되어 있으며
서버에 지정되지 않은 path로 접근 시 www.naver.com으로 이동하도록 되어 있다.
위의 예시로 확인할 수 있듯이 사용자의 요청값 (request 객체)를 이용해서
요청 정보를 확인할 수 있다.
'정리하기 > 모던웹을 위한 Node.js' 카테고리의 다른 글
외부 모듈 (0) | 2017.06.06 |
---|---|
이벤트 (0) | 2017.05.20 |
node.js의 전역 객체 (0) | 2017.05.14 |
Node.js 개요 (0) | 2017.05.11 |
- Total
- Today
- Yesterday
- 함수
- js
- awe-some
- angular
- 자바스크립트
- framework
- mocha.js
- javascript
- browserify
- vuex
- Android
- 뉴욕
- node.js
- backbone.js
- nextTick
- 외부모듈
- eventbus
- 원하는것이있다면끝까지버텨라
- #가상머신
- common.js
- node
- Typescript
- marionetts.js
- AndroidContext
- MarionetteJS
- nodejs
- awesome-vue
- vue.js
- git tag
- vue
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |