[Node.js] Express Router

유동균·2023년 2월 5일
0

Node.js

목록 보기
1/11
post-thumbnail

1. Router란?

  • Express에서 라우트를 관리하는 객체.
  • Router란 Route를 구성하고 코드를 구성하는데 도움을 줄 수 있는 모듈이다.
  • 라우터를 사용하면 모든 애플리케이션의 라우트를 하나의 파일에 정의하고 그것을 Express 애플리케이션에서 사용할 수 있다.
  • 라우터를 사용하여 특정 경로(URL)에 대한 HTTP 요청을 처리할 수 있다. 각 라우트는 단독적으로 작성하고, 웹 애플리케이션에서 필요할 때 조합하여 사용할 수 있다.
  • Express에서, 라우트는 특정 HTTP 요청, 예를 들어 GET 또는 POST 요청,을 어떻게 처리할지 정의하는 애플리케이션의 경로 또는 엔드 포인트를 말한다.
app.get('/', function(req, res) {
 res.send('안녕하세요');
});
// /routes/index.js
const express = require('express');
const router = express.Router();

router.get('/', function(req, res) {
  res.send('안녕하세요');
});

module.exports = router;
// App.js

const express = require('express');
const app = express();
const router = require('./routes/index');

app.use('/', router);

app.listen(3000);

2. Router 사용

  • 익스프레스에선 이러한 라우터를 미들웨어로서 제공하고 있는데, 다음과 같은 순서로 라우터 미들웨어를 사용할 수 있다.

2.1. Express Import

const express = require('express');

2.2. Express 애플리케이션을 생성

const app = express();

2.3. 라우터 객체 생성

const router = express.Router();

2.4. 경로와 해당 경로에 대한 동작을 정의

router.get('/', (req, res) => {
  res.send('Hello World!');
});
  • 요청 패스를 라우터 객체에 등록할 때 사용하는 메소드엔 get(), post(), put(),delete(),all() 등이 있다.

2.5. 생성한 라우터 객체를 Express 애플리케이션에 매핑

"Mapping"은 각 URL 또는 경로에 대한 핸들러 함수(handler function)를 지정하는 것을 말한다. 즉, 웹 요청이 오면 특정 URL 또는 경로에 대한 핸들러 함수가 실행되도록 매핑하는 것.

app.use('/', router);

2.6. Express 애플리케이션을 시작

app.listen(3000, () => {
  console.log('Server running on port 3000');
});
  • 위의 예제처럼 Express 라우터를 사용할 수 있다. 이 예제에서는 기본 경로에 대해 "Hello World!" 메시지를 반환하는 라우터를 정의했지만, 원하는 동작을 정의하여 다양한 경로에 대해 다양한 처리를 할 수 있다.

3. URL 파라미터를 사용하는 방법

  • URL 파라미터는 요청 파라미터(query string)와 달리 URL 주소의 일부로 들어간다.

URL 파라미터와 Query 파라미터는 두 가지 다른 방식으로 HTTP 요청에 데이터를 전달하는 방법

  • URL 파라미터: URL 자체에 파라미터를 포함하여 전달하는 방식이다. URL에서 파라미터의 값이 보여지며, 값은 주소에 포함된 것으로 서버에 전달된다. /api/users/:id
  • Query 파라미터: URL 뒤에 "?" 기호 뒤에 파라미터를 전달하는 방식이다. 값은 주소에 보여지지 않고, HTTP 요청 메시지의 body에 포함된다. /api/users?id=123

    요청의 정보를 보다 효율적으로 전달하고자 할 때, URL 파라미터 또는 Query 파라미터 중 하나를 사용할 수 있다. 서버로 전달하고자 하는 데이터의 정보 수준과 개인적인 선택에 따라 어떤 파라미터를 사용할지 결정할 수 있다.
app.get("/users/:id", (req, res) => {
  const id = req.params.id;
  const user = users.find(user => user.id === id);
  res.send(user);
});
  • 위의 예제에서 /:id/users/ 뒤에 오는 값을 파라미터로 처리하겠다는 의미이다.

  • 이렇게 지정한 파라미터는 req.params 객체 안에 들어간다.

  • 따라서 :id으로 표시된 부분에 담겨 전달된 값은 req.params.id 속성으로 접근할 수 있다.

0개의 댓글