Part 3. Node.js를 사용한 웹개발
CHAPTER 06 http모듈
HTTP란?
HTTP(HyperText Transfer Protocol)
- TCP/IP 기반의 프로토콜 : 페이지 전달 프로토콜 / 파일 전송 프로토콜
Node.js의 http모듈
- 가장 기본적인 웹 모듈
HTTP웹 서버와 클라이언트를 생성하는 것과 관련된 모든 기능을 담당
Node.js로 웹서버를 개발하자!
http 모듈의 사용법
http 모듈의 응용으로 웹서버 기능을 구현
개념 | 설명 |
---|---|
요청 | 웹페이지에 접속하려는 요청 |
응답 | 요청을 받아 이를 처리하는 작업 |
http모듈 | HTTP웹서버와 관련된 기능 |
server객체 | 웹서버를 생성하는데 필요한 객체 |
response객체 | 응답메세지 작성시 request 이벤트 리스너의 두번째 매개변수 |
request객체 | 응답메세지 작성시 request 이벤트 리스너의 첫번째 매개변수 |
6.1 요청과 응답
*스트림 : 프로그램이 프로그램 외부와 통신할때의 통로
*요청메시지와 응답메시지 확인법
[F12]버튼 - 개발자 도구 - network 탭에서 현재 웹페이지를 새로고침 - http서버에서의 요청과 응답 확인가능
6.2 server 객체
메서드 이름 | 설명 |
---|---|
createServer() | server객체를 생성 |
listen(port[, callback]) | 서버 실행 |
close([callback]) | 서버 종료 |
//모듈을 추출
var http = require('http');
//웹서버를 생성
var server = http.createServer();
//웹서버를 실행_52273번 포트를 사용
server.listen(52273);
// 웹서버를 종료
server.close();
server객체의 이벤트
이벤트이름 | 설명 |
---|---|
request | 클라이언트가 요청시 |
connection | 클라이언트 접속시 |
close | 서버 종료시 |
checkContinue | 클라이언트가 지속적인 연결을 하고있을때 |
upgrade | 클라이언트가 HTTP업그레이드를 요청할 때 |
clientError | 클라이언트에서 오류가 발생할 때 |
6.3 response 객체
클라이언트에 웹페이지를 제공하려면 응답메시지를 작성해야한다. 이때 response 객체를 사용한다.
메서드이름 | 설명 |
---|---|
center | center |
writeHead(statusCode[, statusMessage][, headers]) | 응답헤더작성 |
end([data[, encoding]][, callback]) | 응답본문작성 |
6.3.1 File System 모듈을 사용한 HTML 페이지 제공
서버에 존재하는 HTML 페이지를 클라이언트에 제공
//서버생성 및 실행, fs모듈을 사용
var fs = require('fs');
var http = require('http');
6.3.2 이미지와 음악파일 제공
-Content-Type 속성으로 설정
MIME형식의 예
Content Type | 설명 |
---|---|
text/plain | 기본적인 텍스트 |
text/html | HTML문서 |
text/css | CSS문서 |
text/xml | XML문서 |
image/jpeg | JPG,JPEG 그림파일 |
image/png | PNG 그림파일 |
video/mpeg | MPEG 비디오 파일 |
audio/mp3 | MP3 음악파일 |
6.3.3 쿠키생성
쿠키란?
키와 값이 들어있는 작은 데이터조각으로 이름, 값, 파기날짜와 경로정보를 포함
일정기간동안 데이터를 저장할수있으므로 로그인상태를 유지하는 웹사이트에서사용(fb)
Set-Cookie 속성
Name = Value; Expires = 날짜; Domain = 도메인; Path = 경로; Secure
6.3.4 페이지 강제이동
웹페이지의 강제이동은 응답헤더의 Location 속성을 사용
Status Code_ writeHead()메서드의 첫번째 매개변수
HTTP Status Code | 설명 | 예시 |
---|---|---|
1XX | 처리중 | 100 Continue |
2XX | 성공 | 200 OK |
3XX | 리다이렉트 | 300 Multiple Choice |
4XX | 클라이언트오류 | 400 Bad Request |
5XX | 서버 오류 | 500 Internal Server Error |
- 추가로 404 Page Not Found
6.4 request 객체
Server 객체의 request 이벤트리스너의 첫번째 매개변수 : request 객체
속성이름 | 설명 |
---|---|
method | 클라이언트의요청방식 |
url | 클라이언트가요청한 URL |
headers | 요청메시지헤더 |
trailers | 요청메시지트레일러 |
httpVersion | HTTP프로토콜 버전 |
6.4.1 url속성을 사용한 페이지구분
Pathname 으로 페이지구분
6.4.2 method 속성을 사용한 페이지 구분
GET/POST 요청 속성에 따른 페이지 구분(method속성사용)
request.method == 'GET'
request.method =='POST'
6.4.3 GET 요청 매개변수 추출
JSON 형식으로 출력
6.4.4 POST 요청 매개변수 추출
요청매개변수를 출력
6.4.5 쿠키추출
쿠키는 문자열이아닌 배열로 저장해야해(express 모듈)
Part 3. Node.js를 사용한 웹개발
CHAPTER 06 http모듈
HTTP란?
HTTP(HyperText Transfer Protocol)
- TCP/IP 기반의 프로토콜 : 페이지 전달 프로토콜 / 파일 전송 프로토콜
Node.js의 http모듈
- 가장 기본적인 웹 모듈
HTTP웹 서버와 클라이언트를 생성하는 것과 관련된 모든 기능을 담당
Node.js로 웹서버를 개발하자!
http 모듈의 사용법
http 모듈의 응용으로 웹서버 기능을 구현
개념 | 설명 |
---|---|
요청 | 웹페이지에 접속하려는 요청 |
응답 | 요청을 받아 이를 처리하는 작업 |
http모듈 | HTTP웹서버와 관련된 기능 |
server객체 | 웹서버를 생성하는데 필요한 객체 |
response객체 | 응답메세지 작성시 request 이벤트 리스너의 두번째 매개변수 |
request객체 | 응답메세지 작성시 request 이벤트 리스너의 첫번째 매개변수 |
6.1 요청과 응답
*스트림 : 프로그램이 프로그램 외부와 통신할때의 통로
*요청메시지와 응답메시지 확인법
[F12]버튼 - 개발자 도구 - network 탭에서 현재 웹페이지를 새로고침 - http서버에서의 요청과 응답 확인가능
6.2 server 객체
메서드 이름 | 설명 |
---|---|
createServer() | server객체를 생성 |
listen(port[, callback]) | 서버 실행 |
close([callback]) | 서버 종료 |
//모듈을 추출
var http = require('http');
//웹서버를 생성
var server = http.createServer();
//웹서버를 실행_52273번 포트를 사용
server.listen(52273);
// 웹서버를 종료
server.close();
server객체의 이벤트
이벤트이름 | 설명 |
---|---|
request | 클라이언트가 요청시 |
connection | 클라이언트 접속시 |
close | 서버 종료시 |
checkContinue | 클라이언트가 지속적인 연결을 하고있을때 |
upgrade | 클라이언트가 HTTP업그레이드를 요청할 때 |
clientError | 클라이언트에서 오류가 발생할 때 |
6.3 response 객체
클라이언트에 웹페이지를 제공하려면 응답메시지를 작성해야한다. 이때 response 객체를 사용한다.
메서드이름 | 설명 |
---|---|
center | center |
writeHead(statusCode[, statusMessage][, headers]) | 응답헤더작성 |
end([data[, encoding]][, callback]) | 응답본문작성 |
6.3.1 File System 모듈을 사용한 HTML 페이지 제공
서버에 존재하는 HTML 페이지를 클라이언트에 제공
//서버생성 및 실행, fs모듈을 사용
var fs = require('fs');
var http = require('http');
6.3.2 이미지와 음악파일 제공
-Content-Type 속성으로 설정
MIME형식의 예
Content Type | 설명 |
---|---|
text/plain | 기본적인 텍스트 |
text/html | HTML문서 |
text/css | CSS문서 |
text/xml | XML문서 |
image/jpeg | JPG,JPEG 그림파일 |
image/png | PNG 그림파일 |
video/mpeg | MPEG 비디오 파일 |
audio/mp3 | MP3 음악파일 |
6.3.3 쿠키생성
쿠키란?
키와 값이 들어있는 작은 데이터조각으로 이름, 값, 파기날짜와 경로정보를 포함
일정기간동안 데이터를 저장할수있으므로 로그인상태를 유지하는 웹사이트에서사용(fb)
Set-Cookie 속성
Name = Value; Expires = 날짜; Domain = 도메인; Path = 경로; Secure
6.3.4 페이지 강제이동
웹페이지의 강제이동은 응답헤더의 Location 속성을 사용
Status Code_ writeHead()메서드의 첫번째 매개변수
HTTP Status Code | 설명 | 예시 |
---|---|---|
1XX | 처리중 | 100 Continue |
2XX | 성공 | 200 OK |
3XX | 리다이렉트 | 300 Multiple Choice |
4XX | 클라이언트오류 | 400 Bad Request |
5XX | 서버 오류 | 500 Internal Server Error |
- 추가로 404 Page Not Found
6.4 request 객체
Server 객체의 request 이벤트리스너의 첫번째 매개변수 : request 객체
속성이름 | 설명 |
---|---|
method | 클라이언트의요청방식 |
url | 클라이언트가요청한 URL |
headers | 요청메시지헤더 |
trailers | 요청메시지트레일러 |
httpVersion | HTTP프로토콜 버전 |
6.4.1 url속성을 사용한 페이지구분
Pathname 으로 페이지구분
6.4.2 method 속성을 사용한 페이지 구분
GET/POST 요청 속성에 따른 페이지 구분(method속성사용)
request.method == 'GET'
request.method =='POST'
6.4.3 GET 요청 매개변수 추출
JSON 형식으로 출력
6.4.4 POST 요청 매개변수 추출
요청매개변수를 출력
6.4.5 쿠키추출
쿠키는 문자열이아닌 배열로 저장해야해(express 모듈)