경량성: Express는 가볍고 최소의 기능만 제공하여 추가적 모듈이나 미들웨어를 쉽게 통합할 수 있다.
개발자가 애플리케이션의 구조를 자유롭게 설계할 수 있도록 하며, 다양한 미들웨어를 통해 애플리케이션의 기능을 확장할 수 있다.
미들웨어: Expree는 미들웨어 구조를 통해 요청(Request)과 응답(Response)을 처리한다. 미들웨어는 이러한 요청과 응답을 가로채서 원하는 작업을 수행할 수 있는 함수이다.
라우팅: 클라이언ㅌ의 요청 URL에 따라 매팽할 수 있는 라우팅 기능 제공
서버 및 API 구축: Expree는 빠르고 쉽게 서버를 설정하고 REST API구축에 유용하다
미들웨어는 요청(Request)과 응답(Response)사이에서 실행되는 함수이다. Express애플리케이션은 여러개의 미들웨어를 설정하여 요청을 처리할 수 있고, 미들웨어는 요청의 데이터를 분석하거나, 인증, 응답을 수정하는 등의 다양한 기능 수핼할 수 있따.
app.use(function(req,res,next){
console.log('Request URL:', req.originalUrl);
next(); //다음 미들웨어로
});
라우팅은 사용자 요청 URL에 따라 서버가 처리할 동작을 정의하는 기능이다. Express에서는 다양한 HTTP메서드(GET,POST,PUT,DELETE등)에 대해 각각의 URL경로와 처리로직을 지정할 수 있다.
나는 이 기능이 Controller와 비슷하다 생각된다.
var express = requre('express')
var app = express()
//GET 요청이 오면
app.get('/', function(req, res){
res.send('Hellow');
});
//POST 요청이 오면
app.post('/form', function(req,res){
res.send('Form 에서 POST요청')
});
req(Request): 사용자가 서버에 보내는 요청정보를 담는다. URL, 요청 메서드, 요청 헤더, 본문 등을 포함한다. GET = query , POST = body로 받을 수 있다.
res(Response): 서버가 사용자에게 보낼 응답 정보를 담고있다. 상태코드 설정, 응답 본문 작성, 헤더 설정등 가능하다.
app.get('hreet/:name', function(req, res){
var name = req.params.name; //URL의 name파라미터를 가져옴
res.send('hello' + name + '!') 사용자에게 보냄
})
Express는 static 미들웨어를 통해 이미지, CSS파일, JS파일과 같은 정적 파일을 쉽게 제공할 수 있다.
var express = require('express')
var path = requre('path')
var app = express()
app.use('/static', express.static(path.join(__dirname, 'public'))) //실제 'public'폴더에 있는 파일을 사용자가 요청한 /'static'경로로 접근
미들웨어는 Express 애플리케이션에서 필수적 역할을 한다. 미들웨어는 요청과 응답객체를 사용해 다양한 처리를 수행하고, 필요하면 다음 미들웨어로 작업을 넘길 수 있다.
//모든 요청에서 실행되는 미들웨어
app.use(function(req,res, next){
console.log('Time: ', Date.now())
next()
})
//특정 경로에서만 실행되는 미들웨어
app.use('/user/:id', function(req, res, next){//'/user/:id'경로로 왔을때 function()실행
console.log('Request URL:' req.originalUrl);
next()
})
var express = require('express')
var app = express()
//라우팅 설정
app.get('/', function(req,res){
res.send('Hello, 20240905')
})
//서버 실행
app.listen(3000, function(){
console.log('3000번 포트에서 서버 실행')
})