본문 바로가기

카테고리 없음

[Node.js] Express.js와 Methods

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 }));