Back Ground

Node - 요청과 응답 [http모듈 웹 서버] 본문

Javascript/Node.js

Node - 요청과 응답 [http모듈 웹 서버]

Back 2019. 2. 23. 00:07



요청과 응답 이해하기


클라이언트로부터 요청이 왔을 때 어떤 작업을 수행할지 이벤트 리스너를 미리 등록해두어야 한다.


이벤트 리스너를 가진 노드 서버를 만들어 보자.



createServer.js

1
2
3
4
5
const http = require('http');
http.createServer((req,res)=> {
    //여기에 어떻게 응답할지 적어준다.
    
});
cs


http서버가 있어야 웹 브라우저의 요청을 처리 할 수 있으므로 http모듈을 사용했다.


http모듈에는 createServer메서드가 있다.

인자로 요청에 대한 콜백 함수를 넣을 수 있다.

요청이 들어올 때마다 매번 콜백 함수 실행된다.


따라서 이 콜백 함수에 응답을 적어주면 된다.


createServer의 콜백 부분을 보면 req와 res 매개변수가 있다.

request   

 req

 response 

 res











다음 예제는 응답을 보내는 부분과 서버 연결 부분 추가해 보겠다.


server1.js

1
2
3
4
5
6
7
8
const http = require('http');
 
http.createServer( (req,res) => {
    res.write('<h1>Hello Node!</h1>');
    res.end('<p>Hello Server!</p>');
}).listen(8080, () => {
    console.log('8080번 포트에서 서버 대기 중입니다.');
});
cs

createServer 메서드 뒤에 listen메서드를 붙이고 클라이언트에게 

공개할 포트 번호와 포트 연결 완료 후 실행될 콜백 함수를 넣어준다.


이제 이 파일을 실행하면 서버는 8080포트에서 요청이 오기를 대기한다.




listen메서드에 콜백 함수를 넣는 대신, 

다음과 같이 서버에 listening 이벤트 리스너를 붙여도 된다.

추가로 error이벤트 리스너도 붙여보았다.










server1-0.js

1
2
3
4
5
6
7
8
9
10
11
const http = require('http');
 
const server = http.createServer( (req,res) => {
    res.write('<h1>Hello Node!</h1>');
    res.end('<p>Hello Server!</p>');
});
server.listen(8080);
server.on('listening',() => {
    console.log('8080번 포트에서 서버 대기중입니다.');
});
server.on('error',(error) => {console.error(error)});
cs


res 객체에는 res.writeres.end 메서드가 있다.


res.write의 첫 번째 인자는 클라이언트로 보낼 데이터

(지금은 HTML 모양의 문자열을 보냈지만 버퍼를 보낼 수도 있다. 또한 여러 번 호출해서 데이터를 여러 개 보내도 된다.)


res.end는 응답을 종료하는 메서드이다.

만약 인자가 있다면 그 데이터도 클라이언트로 보내고 응답을 종료한다.






HTML파일 불러오기 


server2.html

1
2
3
4
5
6
7
8
9
10
11
12
13
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <title>Node.JS 웹 서버</title>
    <meta name="viewport" content="width=device-width, initial-scale=1">
</head>
<body>
    <h1>Node.js 웹 서버</h1>     
    <p>만들 준비되셧나요?</p>
</body>
</html>
cs



server2.js

1
2
3
4
5
6
7
8
9
10
11
12
13
const http = require('http');
const fs = require('fs');
 
http.createServer( (req,res) => {
    fs.readFile('./server2.html', (err,data) => {
        if(err){
            throw err;
        }
        res.end(data);
    });
}).listen(8081,() => {
    console.log('8081번 포트에서 서버 대기 중');
});
cs


fs모듈로 HTML파일을 읽는다.

data변수에 저장된 버퍼를 그대로 클라이언트에 보내주면 된다.





'Javascript > Node.js' 카테고리의 다른 글

Node - Rest API [http모듈 웹 서버]  (0) 2019.02.24
Node - 쿠키와 세션 [http모듈 웹 서버]  (2) 2019.02.23
Node - Node 기능  (0) 2019.02.15
Callback Hell 이란 [ 해결방법 ]  (2) 2019.01.23
NodeJS - ES2015+  (0) 2019.01.18
Comments