Express.js
Express.js는 Node.js 환경에서 서버 애플리케이션을 구축하기 위한 간결하고 유연한 웹 애플리케이션 프레임워크다.
- 간결함과 유연성: 간결한 코드로 강력한 웹 애플리케이션과 API를 구축할 수 있게 해준다. 개발자가 원하는 방식으로 애플리케이션의 구조를 설계할 수 있는 유연성을 제공한다.
- 미들웨어 지원: 미들웨어는 요청(request)과 응답(response) 사이에서 특정 작업을 수행하는 함수다. Express.js는 다양한 미들웨어를 쉽게 추가하고 사용할 수 있다.
- 라우팅: URL 경로에 따라 HTTP 요청을 처리하는 강력한 라우팅 기능을 제공한다. REST API를 구축할 때 매우 유용하다.
- 템플릿 엔진 지원: 다양한 템플릿 엔진을 쉽게 통합할 수 있어, 동적인 HTML 페이지를 생성하는 데 도움이 된다.
- 확장성: 다양한 서드파티 미들웨어와 플러그인을 지원하여 기능을 확장할 수 있다.
*REST API: REST 아키텍처를 준수하는 웹 API. HTTP 프로토콜에서 제공하는 기본 method (GET, POST, PUT, PATCH, DELETE)를 사용해서 내부의 두 프로세스가 네트워크를 통해 데이터를 주고 받는 방식.
Express.js를 사용해 간단한 서버를 구축하는 방법은 다음과 같다.
const express = require('express'); // Express 모듈 불러오기
const app = express(); // Express 애플리케이션 생성
const port = 3000; // 서버 포트 설정
// JSON 형식의 요청 본문을 파싱하는 미들웨어 설정
app.use(express.json());
// GET 요청에 대한 라우트 설정
app.get('/', (req, res) => {
res.send('Hello, world!'); // 클라이언트에 응답 보내기
});
// POST 요청에 대한 라우트 설정
app.post('/data', (req, res) => {
console.log(req.body); // 요청 본문 출력
res.send('Data received'); // 클라이언트에 응답 보내기
});
// 서버 시작
app.listen(port, () => {
console.log(`서버가 포트 ${port}에서 실행 중입니다.`);
});
Routing Method
Routing Method는 특정 HTTP 메서드와 경로에 대해 요청을 처리하는 방법을 정의하는 메서드이다. 종류는 다음과 같다.
app.get(path, callback) | HTTP GET 요청 처리 |
app.post(path, callback) | HTTP POST 요청 처리 |
app.put(path, callback) | HTTP PUT 요청 처리, 주로 자원의 전체 업데이트에 사용 |
app.patch(path, callback) | HTTP PATCH 요청 처리, 주로 자원의 일부 업데이트에 사용 |
app.delete(path, callback) | HTTP DELETE 요청 처리 |
app.all(path, callback) | 모든 HTTP 메서드에 대한 요청 처리 |
Middleware Method
Middleware Method는 요청과 응답 객체를 활용하여 요청을 처리하는 과정에 중간 단계를 추가한다. 종류는 다음과 같다.
app.use(path, callback) | 애플리케이션 레벨 미들웨어 설정. 특정 경로나 모든 경로에 대해 미들웨어 적용 |
app.use(path, router) | 서브 라우터 설정. 특정 경로에 대한 라우팅 모듈화 |
HTTP Request, Response Method
- Request (req): 클라이언트의 요청에 대한 정보를 담고 있는 요청 객체이다.
- Response (res): 서버의 응답을 구성하고 클라이언트에 보낼 때 사용하는 응답 객체이다.
Request | 설명 |
req,param | URL 표현 중 /path/:id에서 :id를 req.param.id로 사용 |
req.query | URL 표현 중 /path?page=2에서 page를 req.query.page로 사용 |
req.body | 일반적으로 POST 요청의 요청 데이터를 담고 있음 |
req.get(' ') | HTTP Request의 헤더 값을 가져올 수 있음 |
Response | 설명 |
res.send() | text 형식의 HTTP 응답 전송 |
res.json() | json 형식의 HTTP 응답 전송 |
res.render() | HTML Template을 사용하여 화면 전송 |
res.set() | HTTP 응답의 헤더 설정 |
res.status() | HTTP 응답의 상태 값 설정 |
* 자주 쓰는 메서드는 표에 추가할 예정
+) body parsing
Express.js에서는 요청 본문을 파싱하기 위해 내장 미들웨어를 사용해야한다. 이 미들웨어는 서버에서 수신한 요청의 본문을 해석하고 파싱하여 JavaScript 객체로 만들어준다.
클라이언트가 HTTP POST 요청을 보내면, 데이터는 요청 본문 (body)에 담겨 전송된다. 이 데이터를 서버에서 사용하기 위해 body parsing이 필요하다.
// JSON 형식의 요청 본문을 파싱하는 미들웨어
app.use(express.json());
// URL 인코딩된 요청 본문을 파싱하는 미들웨어
app.use(express.urlencoded({ extended: true }));