본문 바로가기

# 미사용

익스프레스 알아보기

Express 객체생성 예제

1
2
3
4
5
6
7
8
9
10
11
12
13
//! Express 기본모듈 불러오기
let express = require('express');
let http    = require('http');
 
//! 익스프레스 객체 생성
let app = express();
app.set('port', process.env.PORT || 3000);
 
//! 익스프레스 서버 시작
http.createServer(app).listen(app.get('port'), ()=>
{
    console.log('Hello, Express : %d', app.get('port'));
});
cs


Express 주요 메소드

 메서드

 파라미터 

 설명 

 set

 name, value 

 Express 객체 내, 해시 테이블의 set 같은 메서드.

 name으로 env, views, view engine은 사용할 수 없다.

 get

 name

 Express 객체 내, 해시 테이블의 get 같은 메서드.

 use

 [path], function, [function...]

 미들웨어 함수를 사용.

 get

 [path], function 

 특정 패스로 넘겨진 요청을 처리.


미들웨어

  • 클라이언트의 리퀘스트시, 서버에서 거쳐야 하는 각각의 작업을 등록한 것
  • 각각의 미들웨어는 서로 일련하게 연결되어 있음
  • 새로운 미들웨러를 등록하기 위해 use() 사용
  • 다음 미들웨어로 순서를 넘기기 위해 next() 사용

미들웨어 예제

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
//! Express 기본모듈 불러오기
let express = require('express');
let http    = require('http');
 
//! 익스프레스 객체 생성
let app = express();
app.set('port', process.env.PORT || 3000);
 
//! 익스프레스 서버 시작
http.createServer(app).listen(app.get('port'), ()=>
{
    console.log('Hello, Express : %d', app.get('port'));
});
 
//! 미들웨어 등록
app.use((req, res, next)=>
{
    console.log('첫 번째 미들웨어가 응답함');
    res.writeHead('200', {'Content-Type':'text/html;charset=utf8'});
    res.write('<h1>첫 번째 미들웨어가 응답함</h1>');
    next();
});
 
app.use((req, res, next)=>
{
    console.log('두 번째 미들웨어가 응답함');
    res.write('<h1>두 번째 미들웨어가 응답함</h1>');
    res.end();
});
cs

RES 객체 주요 메소드

 메서드

 파라미터 

 설명 

 write [data]

 클라이언트에게 응답 데이터를 전송 
 wirteHead를 같이 기술해야 함

 send

 [body] 

 클라이언트에게 응답 데이터를 전송 

 writeHead를 기술하지 말아야 함

 status

 code 

 HTTP 상태코드를 전송함.

 메세지는 send() 또는 end()를 통해 추가로 전송해야 함. 

  ex)  res.status(403).send('Forbidden');

 sendStatus

 statusCode 

 HTTP 상태코드를 전송함.

   ex) res.sendStatus(403);

 redirect 

 [status], path 

 웹 페이지 경로를 강제로 이동시킴 

 render 

 view, [locals], [callback] 

 뷰 엔진을 이용해 문서를 만든 후 전송 

REQ 객체 주요 멤버

 멤버

 설명 

 query 

 클라이언트에서 GET 방식으로 전송한 요청정보를 담고있음. 

   ex)  localhost:3000/?dat=naver 이면,

         req.query.dat == naver

 body 

 클라이언트에서 POST 방식으로 전송한 요청정보를 담고있음.

 단, 추가적인 POST-BODY 파서모듈이 필요함

 header(name)

 헤더를 확인함. 

POST 방식의 요청 파라미터 얻어오기

POST 방식은 GET 방식과 비교하여 다음과 같은 특징을 갖는다.

  • 요청정보가 본문영역에 위치
  • 많은량의 정보를 보내도 값이 절삭되지 않음

따라서 POST 방식의 요청정보를 얻어오려면 추가적인 파싱 외부모듈이 필요하다.

다음과 같이 외부모듈을 다운로드한다.

   npm install body-parser


그리고 익스프레스 서버 객체에 다음과 같이 등록한다.


1
2
3
4
5
6
7
8
...
 
//! body-parser 등록
app.use(bodyParser.urlencoded({extended:false}));
app.use(bodyParser.json());
 
...
 
cs


이제 GET 방식처럼 다음과 같이 파라미터를 얻어올 수 있다.

    let paramName = req.body.[인자명];


'# 미사용' 카테고리의 다른 글

쿠키 세션 다루기  (0) 2018.02.25
라우터 다루기  (0) 2018.02.25
Chrome Headless Driver  (0) 2018.02.12
웹서버 시작하기  (0) 2018.02.12
파일 입출력 다루기  (0) 2018.02.10