// app.js
const http = require('http'); //(1)
// HTTP 서버 객체 생성
const server = http.createServer(); //(2)
// HTTP 요청(이벤트)이 발생하면 실행되는 Listener(함수) 정의
const httpRequestListener = function (request, response) {
//(3)
response.writeHead(200, { "Content-Type": "application/json" }); //(4)
response.end(JSON.stringify({ message: "Hello World!" }));
}; //(5)
// http request가 발생하면 httpRequestListener가 실행될 수 있도록
// request 이벤트에 httpRequestListener(함수) 등록
server.on("request", httpRequestListener); // (6)
createServer([options], requestListener)
options : 클라이언트와 얼만큼 연결을 유지할 것인가 결정하는 keepAliveTimeout 옵션 등
requestListener : http request가 들어왔을 때, 실행되어야 함
두가지 파라미터를 모두 선택적으로 받을 수 있고, 받지 않을 수도 있다
request와 response를 파라미터로 가짐 -> Hello World 메시지 반환
req & res 는 함수를 호출하는 곳에서 인자(arguments)로 넣어주는 값을 의미
(1) ~ (5) 까지만 작성하면 함수를 실행할 수 없음
서버가 http 요청을 이벤트(event)로 인식해서
http 이벤트가 발생할 때마다 httpRequestListener 함수를 실행할 수 있도록 이벤트 등록
= on method
server 객체에 'request" 이름으로 이벤트 등록
클라이언트의 요청에 대한 정보가 담긴 request 객체와
응답에 대한 정보가 담긴 response 객체 넘겨주면서 내부 로직 실행
웹브라우저나 또느느 앱으로부터 어떤 요청이 있을 때
요청한 사용자 측으로 값을 반환해줄 때 사용하는 객체
response.writeHead()라는 메소드에서 첫번쨰는 200 이라는 숫자값을,
두번째는 중괄호 안에 { '키' : '값' } 형태의 값을 넣어서 호출
response.writeHead(200, { "Content-Type": "application/json" })
숫자값 - http status code
{ '키' : '값' } - response message의 body에 담기는 컨텐츠의 타입이 applicatiton/json 형식이라는 것을 정의
여기서는 Content-Type이라는 키 값이 담김 (Authorization, Cookie)가 담기기도 함
reponse.end() 라는 함수에 객체를 담아서 response message의 body에 담아서 반환
response.end(JSON.stringify({ message: "Hello World!" }));
json 형태로 화면에 출력
요청을 보낸 클라이언트와 관련된 데이터가 담겨 있는 객체
// app.js
const httpRequestListener = function (request, response) {
console.log(`request object : ${request}`)
response.writeHead(200, { "Content-Type": "application/json" });
response.end(JSON.stringify({ message: "Hello World!" }));
};
console.log에 찍어보기
// app.js
const http = require('http'); // (1)
// HTTP 서버 객체 생성
const server = http.createServer(); // (2)
// HTTP 요청(이벤트)이 발생하면 실행되는 listener(함수) 정의
const httpRequestListener = function (request, response) { // (3)
response.writeHead(200, { "Content-Type": "application/json" }); // (4)
response.end(JSON.stringify({ message: "Hello World!" })); // (5)
};
// http request가 발생하면 httpRequestListener가 실행될 수 있도록
// request 이벤트에 httpRequestListener(함수) 등록
server.on("request", httpRequestListener); // (6)
server.listen(8000, '127.0.0.1', function() { // (7)
console.log('Listening to requests on port 8000');
});
생성된 서버가 8000 포트를 수신 포트로 보고 수신대기
= listen() 함수를 호출해야만 server가 해당 포트를 listening 수신 대기
listen() 메소드는 시간이 걸릴 수 있는 작업이라서 callback(비동기)로 실행하여
'Listening to requests on port 8000' 출력
node app.js
Listening to requests on port 8000
'Listening to requests on port 8000' 메시지가 출력되면 정상적으로 서버 실행