Express.js란
2024. 11. 17. 17:58ㆍ카테고리 없음
반응형
Express.js는 Node.js를 기반으로 한 웹 애플리케이션 프레임워크이다.
웹 및 모바일 애플리케이션을 개발할 때 필요한 기능들을 쉽게 제공하며, Node.js의 복잡한 API를 단순화하여 개발 효율성을 높인다.
주요 특징:
- 유연한 설계
- 단일 페이지, 다중 페이지, 하이브리드 웹 애플리케이션을 모두 지원한다.
- 경량 프레임워크
- 기본적으로 간단하고 가벼운 구조를 제공하며, 플러그인 및 미들웨어를 통해 확장이 가능한다.
- 경로 관리
- 서버와 클라이언트 간의 URL 경로를 체계적으로 관리할 수 있다.
- 미들웨어 지원
- 요청(Request)과 응답(Response) 사이에서 동작을 처리하는 미들웨어를 쉽게 구현할 수 있다.
왜 Express.js를 사용하는가?
- Node.js의 단순화
- Node.js의 기본 API는 유연하지만 복잡한 편이다.
Express.js는 이를 간결하게 만들어 쉽고 빠르게 개발할 수 있도록 돕다.
- Node.js의 기본 API는 유연하지만 복잡한 편이다.
- 배우기 쉬움
- Express.js의 구조와 사용법이 직관적이며, Node.js 경험이 있다면 빠르게 습득 가능한다.
- 넓은 커뮤니티와 생태계
- 많은 개발자들이 사용하며, 풍부한 학습 자료와 오픈소스 프로젝트를 제공한다.
- 다른 프레임워크와의 연결성
- Express.js는 자체적으로도 강력하지만, 이 위에 기반한 프레임워크(예: Nest.js, Sails.js)도 많아 다른 프레임워크로 쉽게 확장할 수 있다.
Express.js의 주요 사용 사례
- RESTful API 구축
클라이언트와 서버 간의 데이터 통신을 간단히 처리.
예: 사용자 인증, 데이터 CRUD 등. - 정적 파일 서비스 제공
CSS, 이미지, JS와 같은 정적 파일을 효율적으로 제공. - 템플릿 렌더링
동적인 HTML을 생성하기 위해 다양한 템플릿 엔진과 통합(예: EJS, Pug). - 미들웨어 개발
요청 로깅, 인증, 에러 핸들링 등 다양한 중간 처리 로직을 구현.
Express.js는 빠르고 효율적이며 확장 가능한 웹 개발을 위한 표준으로 자리 잡고 있다.
const express = require('express'); // Express 모듈 가져오기
const PORT = 4000; // 서버가 실행될 포트 번호 설정
const app = express(); // Express 애플리케이션 생성
// HTTP GET 요청에 대한 라우트 설정
app.get('/', (req, res) => {
res.send('Hello, world!'); // 클라이언트에게 "Hello, world!" 응답 전송
});
// 서버 시작 및 지정된 포트에서 리스닝
app.listen(PORT, () => {
console.log(`Running on port ${PORT}`); // 서버가 실행 중임을 콘솔에 출력
});
- require('express')
- Express.js 라이브러리를 가져온다. Express는 웹 애플리케이션을 쉽게 구축할 수 있도록 돕는 프레임워크이다.
- const PORT = 4000
- 서버가 동작할 포트를 4000으로 설정한다.
클라이언트는 브라우저에서 http://localhost:4000으로 접속할 수 있다.
- 서버가 동작할 포트를 4000으로 설정한다.
- const app = express();
- app은 Express 애플리케이션 객체로, 이를 통해 서버의 동작(라우트, 미들웨어 등)을 정의한다.
- app.get('/', (req, res) => { ... })
- 클라이언트가 GET 요청을 / 경로로 보낼 때 실행된다.
- req: 요청(request) 객체
- res: 응답(response) 객체
- res.send('Hello, world!'): 클라이언트에게 단순한 텍스트 "Hello, world!"를 응답한다.
- app.listen(PORT, () => { ... })
- 서버를 지정한 포트(4000)에서 실행한다.
- 콜백 함수는 서버가 성공적으로 시작되었을 때 콘솔에 메시지를 출력한다.
Express.js로 REST API 구현
- const Users
- Users 배열은 사용자 데이터를 포함하고 있다.
예: id와 name 속성으로 구성된 객체의 목록. - 현재 두 명의 사용자가 정의되어 있다:
- ID: 0, 이름: 'JJ'
- ID: 1, 이름: 'DD'
- Users 배열은 사용자 데이터를 포함하고 있다.
- app.get('/users', (req, res) => { ... })
- 클라이언트가 GET 요청을 /users 경로로 보낼 때 호출된다.
- res.send(Users)는 Users 데이터를 JSON 형식으로 클라이언트에 응답한다.
const Users=[
{
id:0,
name:'JJ'
},
{
id:1,
name:'DD'
}
]
const app =express();
app.get('/users',(req,res)=>{
res.send(Users);
})
Express.js로 동적 경로 요청 처리
1. GET 요청에서 URL 파라미터 사용
주제: /users/:userId 경로의 동적 매개변수를 통해 특정 사용자 조회
- 목적: 클라이언트가 사용자 ID를 요청 URL에 포함해 특정 사용자 정보를 조회할 수 있도록 처리.
app.get('/users/:userId', (req, res) => {
const userId = Number(req.params.userId); // URL에서 userId 추출 및 숫자로 변환
const user = Users[userId]; // Users 배열에서 해당 ID의 사용자 조회
if (user) {
res.jsonp(user); // 사용자가 존재하면 JSONP 형식으로 응답
} else {
res.sendStatus(404); // 사용자가 없으면 404 Not Found 상태 반환
}
});
코드 동작 설명
- 동적 매개변수 :userId:
- /users/:userId 경로는 URL에 포함된 값(userId)을 동적으로 처리.
- 예: 요청 URL이 /users/1이면 :userId 값은 1이 됨.
- req.params 객체:
- Express는 경로의 동적 매개변수를 req.params 객체에 저장.
- req.params.userId를 통해 경로에서 전달된 사용자 ID에 접근.
- 데이터 조회:
- 전달받은 userId를 Number로 변환한 뒤, Users 배열의 해당 인덱스 값으로 특정 사용자 조회.
- 조건 처리:
- 사용자 존재: 해당 ID의 사용자가 있으면 res.jsonp(user)를 사용해 JSONP 형식으로 응답.
- 사용자 미존재: 해당 ID의 사용자가 없으면 res.sendStatus(404)로 응답.
반응형