상세 컨텐츠

본문 제목

[Express] Express.js를 살펴 보자

Node.js

by 메타샤워 2023. 7. 19. 14:41

본문

Exrpess.js

 
Connect 미들웨어가 Node.js의 HTTP 모듈을 확장한 것 처럼, Express.js는 Connect 미들웨어를 확장하였다.
그렇기 때문에 Express.js의 소스틑 Connect의 소스와 매우 닮았다. 단지 ' app ' 변수 셋팅 하는 부분만 다르다.
 
var express = require('express');
var http = require('http');
var app = express();
~
~
~
~
~
.listen(6549);
중간 부분은 다르다. connet 미들웨어가 구현한 미들웨어를 모든 클라이언트 요청마다 순서대로 호출해주는 기능을 내세운다.
하지만 express.js는 이 기능을 통해서 다음 항목들에 대하여 유용한 기능을 제공해주고 있다. 
* Routing
* 진보된 Request Response, View
 
◎ Routing
Routing( 라우팅 ) 은 서로 다른 요청들을 각각 ㅁ자는 핸들어와 매핑 해주는 기능이다.
 
 Express 설치 하자
npm install express
var express = require('express'), http = require('http');
var app = express();
 
//  app.all() 함수로 "모든 요청('*')은 이 함수를 거쳐 간다라고 명시한다.
app.all("*", function(request, response, next) {
    response.writeHead(200, {"Content-Type" : "text/plain"});
    next();
});
 
// app.get() 함수는 Express의 라우팅 시스템 이다.
// 라우팅 시스템에서 호출되는 함수는 'app.post()' 일 수도 있고,
// 어떠한 HTTP 함수들을 호출 할 수 있게 되어 있다.
// 첫 번째 인자값을 경로이고, 두 번째 인자값은 Request Handler이다.
// 각 Request Handler는 미들웨어와 같은 방식으로 동작한다.
// 차례대로 수행되면서, 첫 번째 인자값에 들어가 있는 경로가
// 일치하지 않으면 다음 Request Handler로 클라이언트 요청을 넘긴다.
 
app.get("/", function(request, response) {   // request.url 이후 ' / '가 요청될때
    response.end("Welcome to the homepage!");
});
 
app.get("/about", function(request, response) {  //request.url 이후 ' /about '이 요청될때
   response.end("Welcome to the about page!");
});
 
//  경로를 동적으로 바인딩하여 출력
// 만약 http://127.0.0.1:6549/hi/abc 로 접속하게 되면, abc값을 전달하여 Hi, abc! 를 출력하게 된다.
app.get("hi/:user", function(req, res) {
    res.end("Hi, " + req.params.user + ".");
});
 
app.get("*", function(request, response) {
    response.end("404!");
});
 
http.createServer(app).listen(6549);
console.log('Server running at http://localhost:6549/');
◎Request Handling
express.js는 connect에서 지원하는 request와 response에서 제공하는 API보다 더 많은 API들을 안고 있다. 
express.js에서 제공하는 request와 reponse 객체들을 조금씩 뜯어보자
 
1. response.redirect 함수
response.redirect("/hi/abc"); // 상대 경로
response.redirect("http://www.google.com/ncr"); // 절대 경로
response.redirect(301, "http://www.naver.com"); // HTTP status code 301​
2. reponse.sendFile - 파일을 통째로 전송
response.sendFile("/movie/hero.mp4");
3.  request.ip - 클라이언트의 접속 IP를 가져온다.
4.  request.files - 클라이언트가 업로드한 파일들을 모두 가져온다.
 
* Express.js의 주요 아이디어는 Request 객체와 Response 객체를 포장하여 다양한 기능을 제공하는 것으로 요약크

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

[OS] os 모듈  (0) 2023.07.19
[fs] File System 모듈  (0) 2023.07.19
[Express] Express의 미들웨어 Connect  (0) 2023.07.19
[Express] Express.js 란  (0) 2023.07.19
[Node.js] cluster 클러스터의 이해  (0) 2023.07.19

관련글 더보기