2 분 소요

Express란?

Express란 Node.js 기반 웹 프레임워크로, 간단하게 서버 쪽 웹 어플리케이션을 쉽게 구현할 수 있도록 도와주는 프레임워크라고 할 수 있습니다.

Express 설치하기

1
npm install express

Express를 설치하기 위해서는 위와 같이 npm 명령어를 사용하면 간단하게 설치할 수 있습니다.
npm 명령어를 사용하기 이전에 Node.js와 npm init 실행이 반드시 선행되어야 합니다.

Express 5가지 개념

[어플리케이션]

1
2
const express = require("express");
const app = express();
  • 위와 같은 익스프레스 인스턴스를 어플리케이션이라고 합니다.
  • listen 함수를 사용하여 서버를 요청 대기 상태로 만들 수 있습니다.
  • 라우팅 설정을 할 수 있습니다.
  • 서버에 필요한 미들웨어를 어플리케이션에 추가합니다.

[미들웨어]

  • 함수들의 연속
  • 미들웨어 추가 시 use 함수를 사용합니다.
  • 미들웨어는 반드시 인자로 req, res, next를 가져야합니다.
  • 미들웨어는 보통 일반 미들웨어에러 미들웨어로 나뉘는데 일반 미들웨어 같은 경우는 인자를 3개 받으며, 에러 미들웨어 같은 경우는 err, req, res, next 로 인자 4개를 가집니다.
  • 미들웨어는 본인이 할 일을 다 한 다음에 꼭 next() 함수를 호출해줘야 합니다. 만약 next() 없이 작성을 하게 된다면 다음 요청을 읽지 못해서 계속 대기 상태로 서버가 유지됩니다.

[라우팅]

  • 요청 url에 대해서 적절한 핸들러 함수로 연결해주는 기능을 라우팅이라고 합니다.
  • 어플리케이션의 get(), post() 메소드로 구현할 수 있습니다.
  • 또한 라우팅을 위한 전용 Router 클래스를 사용할 수도 있습니다.

[요청객체 -> req]

  • 클라이언트의 요청 정보를 담은 객체를 요청객체라고 합니다. (http 모듈의 request 객체를 래핑)
  • 주로 req.params(), req.query(), req.body() 메소드를 사용합니다.

[응답객체 -> res]

  • 클라이언트의 응답 정보를 담은 객체를 응답객체라고 합니다. (http 모듈의 response 객체를 래핑)
  • 주로 res.send(), res.status(), res.json() 과 같은 함수를 사용할 수 있는데, res.send()는 문자열을 응답하는 함수이고 res.status()는 http 상태 코드를 응답하며, res.json()은 json 데이터를 응답합니다.

Express 사용하기

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
const express = require("express");
const app = express();
const port = 3000;

// 메인 페이지에 접속했을 때 콜백함수 실행
app.get("/", (req, res) => {
  res.send("Hello World!");
});

// hi 페이지에 접속했을 때 콜백함수 실행
app.get("/hi", (req, res) => {
  res.send("<h2>Hi!</h2>");
});

app.listen(port, () => {
  console.log(`Example app listening at http://localhost:${port}`);
});
  • 위 코드에서 보이는 get() 메소드는 라우터라고 하며 어떠한 요청이 들어오면 그것을 처리해주는 역할을 합니다.
  • send() 라는 함수는 클라이언트에 보내는 역할을 하며, html 요소가 인수로 들어갈 수 있습니다.

Today I Learned

오늘은 Node.js 기반 웹 프레임워크 Express가 무엇인지 알게되었고, 간단한 사용 방법을 익혔습니다. 스프링으로 백엔드 개발을 하다가 자바스크립트로 서버를 공부하니 신기한 것이 정말 많은 것 같네요. 앞으로 백엔드 작업을 할 때 Express를 많이 사용하게 될 것 같은데, 블로그에 꾸준히 정리하면서 열심히 익혀야겠습니다 😊

참고 사이트

https://expressjs.com/

🔔포스팅 공지
개인 공부 기록용 블로그 입니다.
잘못된 부분이 있을 시 메일이나 댓글로 지적해주시면 감사드리겠습니다 :)

댓글남기기