TIL#45 Node) HTTP와 Express 모듈

luneah·2021년 12월 11일
0

Node

목록 보기
2/6
post-thumbnail

HTTP 모듈

HTTP란 node.js에서 사용하는 서버 모듈이다. HTTP 웹 서버를 생성하는 것과 관련된 모든 기능을 담당한다. HTTP 모듈은 server객체, request 객체, response객체를 사용한다.

[ server 객체 ]
HTTP 모듈의 createServer() 메소드를 사용하여 server 객체를 생성한다.

- 메소드

  • listen(port, callback) : 서버를 실행하고 클라이언트를 기다린다.
  • close(callback) : 서버를 종료한다.

- 이벤트

  • request : 클라이언트가 서버에 요청할 때 발생하는 이벤트
  • connection : 클라이언트가 접속할 때 발생하는 이벤트
  • clientError : 클라이언트에서 오류가 발생할 때 발생하는 이벤트
  • close : 서버가 종료될 때 발생하는 이벤트

[ request 객체 ]
클라이언트가 서버에게 전달하는 메세지(정보)를 담는 객체이다.

- 속성

  • method : 클라이언트 요청 방식으로 GET, POST가 있다.
  • url : 클라이언트가 요청한 URL을 나타낸다.
  • headers : 요청 메세지 헤더를 나타낸다.

[ response 객체 ]
서버에서 클라이언트로 응답 메세지를 전송시켜주는 객체이다.

- 메소드

  • writeHead(statusCode, statusMessage, headers) : 응답 헤더를 작성한다.
  • end(data, encoding, callback) : 응답 본문을 작성한다.

HTTP 모듈 예

http.createServer((req, res) => {

        res.writeHead(200, {'content-type':'text/html'});
        res.end('<!DOCTYPE html><html lang="en">
                <head>
                  <meta charset="UTF-8">
                  <title>node.js</title>
                </head>
                <body>
                  <p>node.js 웹서버</p>
                </body></html>');

    }).listen(3000, () =>{
        console.log('서버 실행중...');
        });

Express 모듈

Express 모듈도 HTTP 모듈처럼 서버 모듈이다. HTTP 모듈만 사용해서 웹 서버를 구성하면 직접 많은 기능을 개발해야한다. 이러한 문제를 해결하기 위해 만들어진 모듈이 익스프레스이다.

익스프레스 모듈은 request, response 객체에 더 다양한 기능이 추가되어있다. 따라서 이를 사용하면 간단한 코드로 웹 서버의 기능을 대부분 구현 할 수 있고, 미들웨어와 라우터를 사용하여 편리하게 웹 서버를 구성할 수 있다.

[ request 객체 ]
request 객체에 HTTP 모듈과 비교해서 새로운 메소드와 속성들이 있다.

- 속성
params : 라우팅 매개변수 추출
query : 요청 매개변수 추출
headers : 요청 헤더 추출

- 메소드
header() : 요청 헤더의 속성 지정혹은 추출
accepts(type) : 요청 헤더의 Accept 속성 확인
is(type) : 요청 헤더의 Content-Type 속성 확인

[ response 객체 ]
request 객체에 HTTP 모듈보다 더 다양한 기능이 추가되어있다.

- 메소드
response.send(value) : 매개변수의 자료형에 따라 적절한 형태로 보여준다.
response.json(value) : JSON형태로 리턴합니다.
response.jsonp(value) : JSONP의 형태로 리턴합니다.
reponse.redirect(status, path) : 웹 페이지의 경로를 이동합니다.

Express 모듈 예

const app = express(); // 생성자
const port = 3000;

app.get('/', (req, res) => {
  res.send('익스프레스 서버 테스트!');
});

app.listen( port, () => {
  console.log(`${port} 포트로 서버 실행중...`);
});
profile
하늘이의 개발 일기

0개의 댓글