# 개발환경 os : windows 10 Pro 64-bit node-v : v10.16.0 npm-v : 6.9.0 ide : visual Studio Code |
* 소스 디렉토리
# 소스 디렉토리 [ROOT] ㄴ app.js ㄴ [config] ㄴ dev.js ㄴ prod.js ㄴ [routes] ㄴ router1.js ㄴ router2.js |
* Express router의 기본형태
const express = require('express');
const router = express();
//기본 형태
router.get('/', function(req, res, next){
});
: express 서드파티 모듈은 node.js에서 http, connect 컴포넌트를 기반으로 한 웹 프레임워크
- 첫 번째 파라미터 : 요청경로
- 두 번째 파라미터 : callback 함수
* 요청경로 형태는 다음과 같음
1) ab?cd → /abcd, /acd, 존재하거나 존재하지 않음
2) /ab+cd → /abcd, abbcd, 하나 또는 그 이상
3) /ab*cd → /abcd, abxcd, abkdcd, 중간에 아무 값이나 포함
4) ab(cd)?e → /abe, /abcde
5) /.*fly$/ → /butfly, /drafly, fly로 끝나는
* Express Router의 Response
메소드 | 내용 |
res.download() | 파일 다운로드 가능 |
res.end() | 응답 프로세스 종료 |
res.json() | JSON 응답 전송 |
res.jsonp() | JSON 응답 전송(JSONP 지원) |
res.redirect() | 요청경로를 재지정 |
res.render() | 보기 템플릿을 렌더링 |
res.send() | 다양한 형태의 응답 전송 |
res.sendFile() | 파일을 옥텟 스트림 형태로 전송 |
res.sendStatus() | 응답상태코드 설정 후 해당 코드를 문자열로 표현한 내용을 응답 본문으로 전송 |
* Routing
: route를 하나의 파일에서 일일이 정의 하는 것은 비효율적이므로 요청을 분할 함. 즉, 각 router를 정의할 통합 router.js 파일에서 express,js 모듈의 router을 추출 후 각 router로의 경로를 지정.
app.js에서 각 모듈의 시작점을 지정하여 연결해 줄 예정
1. 사전 준비
https://bogyum-uncle.tistory.com/70
2. routes 디렉토리, router1, router2.js 생성
2.1. root/routes/router1.js
//함수로 만들어 객체 app을 전달
module.exports = function(app){
var express = require('express');
var router = express.Router();
router.get("/", function(request, response){
response.writeHead(200, {"Content-Type":"text/plain; charset=utf-8"});
response.end("/r1 경로로 접근...!");
console.log(response.statusCode);
});
router.get("/action", function(request, response){
response.writeHead(200, {"Content-Type":"text/plain; charset=utf-8"});
response.end("/r1/action 경로로 접근...!");
console.log(response.statusCode);
});
//라우터 리턴
return router;
}
2.2. root/routes/router2.js
//함수로 만들어 객체 app을 전달
module.exports = function(app){
var express = require('express');
var router = express.Router();
router.get("/", function(request, response){
response.writeHead(200, {"Content-Type":"text/plain; charset=utf-8"});
response.end("/r2 경로로 접근...!");
console.log(response.statusCode);
});
router.get("/action", function(request, response){
response.writeHead(200, {"Content-Type":"text/plain; charset=utf-8"});
response.end("/r2/action 경로로 접근...!");
console.log(response.statusCode);
});
//라우터 리턴
return router;
}
2.3. root/app.js 수정
//Express를 변수에 담기
var express = require("express");
//Express 호출 후 새로운 Express 애플리케이션을 변수(app)에 넣음
var app = express();
/**
* Routing 경로 설정
*
* app.js에서 생성된 데이터를 사용하기 위해서 require에서 app이란 객체를 전달
*/
app.use('/r1', require('./routes/router1')(app));
app.use('/r2', require('./routes/router2')(app));
app.use(function(request, response){
//4XX : 클라이언트 오류
response.statusCode = 404;
response.end("404 Error!");
});
app.listen(3000, function(){
console.log("Server Running : 3000....!");
})
3. 확인
3.1. TERMINAL > node app.js
3.2. 브라우저 확인
'LANGUAGE > NODEJS' 카테고리의 다른 글
[NODEJS] 환경변수 관리(dotenv) (0) | 2019.08.28 |
---|---|
[NODEJS] logger(morgan + winston) (0) | 2019.08.28 |
[NODEJS] express , 개발, 운영환경 구분 (NODE_ENV) (0) | 2019.08.26 |
[NODEJS] Logger (Winston) (0) | 2019.08.26 |
[NODEJS] Mysql 연동 1/ 세팅, 스키마 생성 (0) | 2019.08.22 |