반응형
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 모듈)
반응형