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] | 클라이언트에게 응답 데이터를 전송 |
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 |