const http = require('http') // http 모듈을 require 메소드를 통해서 불러와 http 변수에 저장
const server = http.createServer();
server.on('request', (request, response) => {
})
http 트랜잭션 해부에 나오는 예시인데, const http
라는 변수에 무엇을 불러오는 걸까 궁금해서 찾다보니, 'http'
라는 모듈을 불러옴을 알게되었습니다. 하지만 node.js를 시작할 때 이걸 왜 불러오는걸까요?
http 모듈은 TCP/IP를 기반으로 둔 프로토콜로, HTML 페이지를 전달하는데 사용하는 프로토콜입니다. 쉽게 말하면 http로 데이터를 주고받기 위해 필요한 코드의 모음이 http 모듈입니다. 이 http 모듈을 사용해서 웹 서버를 만들고 데이터를 요청하고 응답받을 수 있습니다.
http 모듈에는 대표적으로
HTTP Server 객체는 HTTP 서버를 구현하는데 기초가 되는 프레임워크를 제공합니다.
Server 객체는 EventEmitter를 구현해 이벤트를 방출합니다.
createServer()
const server = http.createServer() //웹 서버 생성, server 객체를 생성해서 반환.
http.createServer([requestListener])
Server 객체를 반환 합니다. requestListener 전달인자는 선택적 사항으로 요청 이벤트 발생시 수행될 콜백을 지정합니다.
이 콜백은 IncomingMessage, ServerResponse 두개를 전달인자로 받습니다.
- IncomingMessage : HTTP 서버나 HTTP 클라이언트는 IncomingMessage 객체를 생성합니다. 서버 쪽에서는 클라이언트 요청이 IncomingMessage가 되고 클라이언트쪽에서는 서버의 응답이 IncomingMessage 객체가 됩니다.
- ServerResponse : request 이벤트 수신 시 내부적으로 serverResponse 객체를 생성합니다. 이 객체는 클라이언트 요청에 대한 응답을 구성하고 전송합니다.
let server = http.createServer()
server.listen(8000)
let server = http.createServer()
server.listen(2000)
server.close() // 서버 종료
server 객체는 EventEmitter 객체를 기반으로 만들어졌습니다. (이건 추후에...)
require('http').createServer((request, response) => {
response.
}).listen(8000)
request 객체는 http.IncomingMessage 객체에 전달됩니다. 클라이언트 요청에 대한 기능을 정리하고있습니다
http.createServer(function (request, response) {
let pathname = url.parse(request.url).pathname;
if (pathname == '/') {
}
else (pathname == '/OtherPage.html') {
}
})
http.createServer((request, response) => {
if (request.method == 'GET') {
}
else if (request.method == 'POST') {
}
})
var query = url.parse(request.url, true).query
http.createServer((request, response) => {
var query = url.parse(request.url, true).query; //Get 요청 매개변수 추출
})
http.createServer((request, response) => {
request.on('data', function(data) {
console.log('POST Data': +data)
})
})
let data = ''
response.on ('data', function(chunk) {
data = data + chunk
})
request.on('data', function(data) {}) : request로 들어온 데이터를 콜백함수의 data 인자값으로 일정 기준으로 조각내어서 넣어줍니다.
조각을 내서 넣어주기 때문에 body += data를 넣어줍니다.
let body = []
request.on('dat', (chunk) => {
body.push(chunk)
}).on('end, () => {} => {
body = Buffer.concat(body).toString()
})
request.on('end', function() => {}) : request 데이터를 다 받고나서 작동합니다.
body에 request에 받은 모든 데이터를 querystring 형식으로 바꿔서 다시 post로 담습니다.
response 객체는 http.serverResponse라는 객체로 전달됩니다. 서버에서 클라이언트로 리턴되는 응답에 대한 기능을 정리하고 있습니다.
require('http').createServer(function (request, response) {
response.writeHead(200, { 'content-Type' : 'text/html' });
response.end('<h1>Hello World!</h1>');
}).listen(8000)