안녕하세요.
이번에는 Node.js의 HTTP 모듈에 대하여 알아보겠습니다.
1. 서버
- http 통신
- 클라이언트 => 요청 => 서버 => 응답 => 클라이언트 => TCP connection
2. http 모듈
- 웹 서버를 구동하기 위한 node.js 내장 웹 모듈
- server 객체, request 객체, response 객체를 사용한다.
- server 객체 : 웹 서버를 생성할 때 사용하는 객체
- response 객체 : 응답 메시지를 작성할 때 두 번째 매개변수로 전달되는 객체
- request 객체 : 응답 메시지를 작성할 때 첫 번째 매개변수로 전달되는 객체
- 서버를 만드는 모듈이지만, 오래된 모듈로 최근에는 거의 사용하지 않는다.
require 함수로 http 모듈을 불러와서 사용한다.
http.createServer() 함수를 이용해서 server 객체를 생성한다.
const http = require('http');
// http 모듈 불러오기
const server = http.createServer();
// server 객체 생성
클라이언트가 접속했을 때 실행되는 함수이며, 인자 값으로 req, res를 받습니다.
req (request) = 클라이언트가 요청한 값
res (response) = 클라이언트에게 보내주는 응답 값
const server = http.createServer(function(req, res) {
// 클라이언트가 접속했을 때 실행되는 함수
res.write('<h1>Hello</h1>');
// res.end가 없으면 홈페이지가 무한 로딩되서 end를 작성해야 로딩이 끝남
res.end('<hr>');
});
res.write() 함수를 사용하면 내용을 출력할 수 있습니다.
res.end() 함수를 작성하지 않으면 서버에서 응답이 아직 남아있다고 판단하여 홈페이지가 무한 로딩이 되는 현상이 생깁니다.
그래서 res.end() 함수를 마지막에 작성해야 합니다.
server 객체에서 server.on() 함수를 사용하면 이벤트를 등록할 수 있으며,
server.listen() 함수를 사용하면 서버를 실행시킬 수 있습니다.
server.listen() 함수는 코드 제일 마지막에 작성합니다.
const server = http.createServer(function(req, res) {
// 클라이언트가 접속했을 때 실행되는 함수
res.write('<h1>Hello</h1>');
// res.end가 없으면 홈페이지가 무한 로딩되서 end를 작성해야 로딩이 끝남
res.end('<hr>');
});
// server.on() 이벤트를 등록
// server.listen() 서버를 실행합니다.
코드를 작성하고 실행합니다.
const http = require('http');
const server = http.createServer(function(req, res) {
res.write('<h1>Hello</h1>');
res.end('<hr>');
});
server.listen(8080, function() {
console.log('8080번 포트로 실행');
});
// 8080포트로 서버가 정상실행되면 콘솔 로그가 찍힘
// localhost:8080 으로 접속가능
콘솔 창에 메시지가 출력됩니다.
여기서 포트를 8080으로 설정했다는 것을 기억하고 홈페이지를 접속합니다.
http://localhost:8080으로 접속을 합니다.
그러면 res.wrtie로 작성한 내용과 res.end로 작성한 hr 태그가 출력되는 것을 볼 수 있습니다.
서버 종료는 터미널 창에서 Ctrl + C 버튼을 눌러서 종료합니다.
- Response 객체
- writeHead : 응답 헤더 작성
- write : 응답 본문 작성
- end : 응답 본문 작성 후 응답 종료
fs 모듈이랑 같이 사용해 보겠습니다.
test.html 파일을 읽어서 data를 전달합니다.
res.wrtieHead(200) 코드는 헤더 값을 전달해 줄 때 사용합니다.
const http = require('http');
const fs = require('fs').promises;
const server = http.createServer(function(req, res) {
fs.readFile('./test.html')
.then(function(data) {
res.writeHead(200);
res.end(data.toString());
});
});
server.listen(8080, function() {
console.log('8080 port open');
});
test.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>test</title>
</head>
<body>
test.html 입니다.
</body>
</html>
먼저 test.html 파일을 읽어서 res.end()를 실행할 때 데이터를 보여주어서 test.html을 실행했을 때와 똑같은 모습을 볼 수 있습니다.
그리고 응답 헤더 값을 확인해 보려면 F12를 눌러서 크롬 개발자 모드로 들어갑니다.
네트워크 - localhost를 눌러봅니다.
응답 헤더 값에 200으로 작성되어 있는 것을 볼 수 있습니다.
3. Http 응답 코드
- 1XX : 처리 중
- 100: Continue, 102: Processing
- 2XX : 성공
- 200: OK, 201: Created, 202: Accepted
- 3XX : 리다이렉트(다른 페이지로 이동)
- 4XX : 요청 오류
- 400: 잘못된 요청, 401: 권한 없음, 403: 금지됨
- 404: 찾을 수 없음(Page not found)
- 5XX : 서버 오류
이상으로 Node.js의 HTTP 모듈에 대하여 알아보았습니다.
감사합니다.
'Node' 카테고리의 다른 글
[Node.js] Express + EJS에 대하여 알아보기 (0) | 2023.02.28 |
---|---|
[Node.js] Express 기본 셋팅에 대하여 알아보기 (0) | 2023.02.27 |
[Node.js] FS 모듈 간단하게 사용해보기 (0) | 2023.02.10 |
[Node.js] 프로미스(Promise)에 대하여 알아보기 (0) | 2023.02.09 |
[Node.js] Callback Function(콜백 함수)에 대하여 알아보기 (0) | 2023.02.08 |