38. WIL-01 Express 미들웨어, RESTful API (항해 15일차)

코이그·2023년 4월 17일

항해99

목록 보기
37/54

Express

자체적인 최소한의 기능을 갖춘 라우팅 및 미들웨어 웹 프레임워크이며, Express 애플리케이션은 기본적으로 일련의 미들웨어 함수 호출이다.

미들웨어 함수

미들웨어 함수는 요청 오브젝트(req), 응답 오브젝트 (res), 그리고 애플리케이션의 요청-응답 주기 중 그 다음의 미들웨어 함수 대한 액세스 권한을 갖는 함수다. 그 다음의 미들웨어 함수는 일반적으로 next라는 이름의 변수로 표시된다.

미들웨어는 요청과 응답 사이에서 데이터에 대해 다양한 기능을 하는 중간다리 함수이다.

미들웨어 기능

  1. 모든 코드 실행.
  2. 요청 및 응답 오브젝트에 대한 변경 실행.
  3. 요청-응답 주기 종료.
  4. 스택 내의 그 다음 미들웨어 함수 호출.

미들웨어 종류

애플리케이션 레벨 미들웨어

app.use(), app.METHOD()(get, post, put, delete 등) 함수를 이용해 애플리케이션 미들웨어를 app 객체의 인스턴스에 바인드할 수 있다.

// 1. 요청을 수신할 때마다 실행
app.use(function (req, res, next) { ... }
// 2. /path에 대한 요청에 대해 실행
app.use("/path", function (req, res, next) { ... }
// 3. /path에 대한 get 요청에 대해 실행
app.get("/path", function (req, res, next) { ... }

라우터 레벨 미들웨어

애플리케이션과 동일하나 바인드되는 인스턴스가 app 객체 대신 router 객체가 된다.

우선은 이정도만 알아도 충분할 것 같다.

강의 실습에서의 예)

// app.js
// 애플리케이션 레벨 미들웨어
...
app.use(express.json());
app.use("/api", [goodsRouter, cartsRouter]);
...
// goods.js
// 라우터 레벨 미들웨어
...
router.get("/goods". (req, res) => { ... }

RESTful API

REST(REpresentational State Transfer)는 www(world-wide web)와 같은 분산 하이퍼미디어 시스템을 위한 소프트웨어 아키텍처의 한 형식이다.

일반적인 HTTP를 통한 송/수신은 REST API를 통해서 사용을 한다.

REST 아키텍처는 사람이 쉽게 이해할 수 있도록 자원을 정의하고 자원을 중심으로 표현을 구성하는 원칙을 제시한다.

REST API 구성 요소 3가지

자원(Resource) - URI

우리가 만들 소프트웨어가 관리하는 모든 것을 자원으로 표시할 수 있다.

행위 - HTTP 메소드

GET, POST 등으로 자원에 대한 CRUD 행위를 표현할 수 있다.
GET - 조회, POST - 생성.

CRUD

Create: 생성(POST)
Read: 조회(GET)
Update: 수정(PUT / PATCH)
Delete: 삭제(DELETE)

표현

자원을 어떻게 표현할 지에 대한 설명이다. 보통 JSON, XML 등의 형식을 이용해서 표현한다.
HTTP에서는 Content-type으로 표현한다.

예시

router.get("/books", (req, res) => {
  res.json({success: true, data: getAllBooks() });
});

/books라는 URI(자원)를 통해 책들의 전체 목록을 불러와서(행위) 응답(JSON 형식으로)해주는 역할을 하는 API이다.

RESTful API란 무엇인가요?

요약

미들웨어: 요청과 응답 사이에서 다양한 기능을 수행하는 중간다리 함수. 주요 기능은 코드의 실행, 요청 및 응답 객체의 처리, 다음 미들웨어 함수 호출.
REST: 웹 상에서 컴퓨터 간의 더욱 원활한 통신을 위한 표준을 제시하는 아키텍처 스타일. API를 구상할 때 REST의 원칙을 따르는 것이 RESTful API.

profile
COYG🔴⚪

0개의 댓글