[WIL] Express Middleware, RESTful API

김시원·2023년 4월 16일
0

WIL

목록 보기
2/9

WIL

Wrap-up Retrospective: What I learned

  1. JS 알고리즘 문제풀이
    JS의 다양한 메서드들을 적용시켜 프로그래머스 문제들을 해결하였다. map, filter, reduce 등의 메서드를 사용하면 단순히 for문보다 어떤 동작을 수행할 것인지 명시적으로 표현해주는 방법이 될 수 있다. 그러나, 2-demensional array를 완전 탐색하는 경우처럼 (arr[i][j]) 이중 for 문이 더 가독성이 더 좋을 경우도 있기 때문에 상황에 맞게 적절한 메서드를 사용하는 것이 중요하다. (팀 컨벤션으로 이에 대해 정해져 있는 경우도 있다고 한다.)

  2. Node 주특기 주차 시작
    Express 프레임워크를 사용해서 노드 프로젝트의 기반을 다질 수 있는 주특기 주차가 시작되었다. 입문 강의를 듣고 서버 개발 연습을 해보았다.

The goal for the next week

프로젝트를 만들고 배포를 해보면서 노드 서버 개발을 스스로 해보자.

Express Middleware

"Express는 미들웨어의 연속적인 체인이다!"
Express는 Node.js를 위한 웹 프레임워크로, API를 만들고 HTTP 요청과 응답을 처리하는 데 사용된다. 미들웨어 함수는 Express의 중요한 구성 요소로, 요청 처리를 위해 미들웨어 체인에 구성할 수 있다.
Express의 미들웨어 함수는 Express 애플리케이션 내에서 요청과 응답을 처리하는 데 사용된다.

미들웨어를 통해 우리는 공통적인 작업이나 기능을 모듈화하고 재사용할 수 있어 코드의 중복을 줄이고 유지보수성을 높일 수 있다. 예를 들면, 모든 response에 대해 header를 추가해주는 처리나, 모든 request에 대한 정보들을 로그로 남기는 처리 같은 공통적인 처리 부분을 하나의 미들웨어가 맡아서 처리를 하는 식으로 관리를 할 수 있다.


5개의 미들웨어를 가지고 있는 express 프로그램은 다음과 같이 차례대로 동작한다. 즉, Express에서 미들웨어 함수는 순차적으로 실행되며, 미들웨어 체인에 정의된 순서대로 실행된다. 미들웨어 함수의 순서는 요청과 응답의 처리에 영향을 미칠 수 있으며, 각 미들웨어는 요청이나 응답 객체를 수정한 뒤 다음 미들웨어나 라우트 핸들러에게 전달된다.

RESTful API

RESTful API는 REST (Representational State Transfer) arhitecture를 따르는 웹 서비스이다. REST는 클라이언트와 서버 간의 통신을 위한 원칙들의 집합으로, 네트워크 기반의 분산 시스템에서 리소스를 표현하고 상태를 전달하기 위한 아키텍쳐 스타일이다.

3가지 구성 요소

  1. Resource - 소프트웨어가 관리하는 모든 것이 리소스가 될 수 있다.
  2. Verb (HTTP method) - CRUD: Create - POST, Read - GET, Update - PUT, PATCH, Delete - Delete
    • PUT vs. Patch: PUT은 리소스의 전체를 업데이트, PATCH는 부분적인 업데이트가 가능
  3. Representation - 리소스가 어떻게 표현될 지 나타내주는 것. 주로 JSON이나 XML 타입이다. HTTP에서는 Content-Type으로 나타나진다.

특징

  • 리소스 중심(Resource-centric): Restful API는 서버가 관리하는 리소스(데이터 또는 기능)를 중심으로 설계됩니다. 각 리소스는 고유한 URI(Uniform Resource Identifier)로 표현되며, 클라이언트는 이 URI를 통해 리소스에 접근합니다.
    - URL과 URI의 차이: 둘 다 인터넷에서 리소스를 식별하는 데 사용되지만, URI가 URL을 포함한다. URI는 URL (Uniform Resource Locator)과 URN (Uniform Resource Name)을 포함한다. URL은 인터넷에서 리소스의 위치를 식별하는 데 사용되고, URN은 리소스의 이름을 식별하는 데 사용된다.

  • Stateless(무상태): Restful API는 클라이언트와 서버 간의 상태를 저장하지 않습니다. 각 요청은 독립적으로 처리되며, 클라이언트가 요청을 보낼 때 필요한 모든 정보가 포함되어야 합니다.

  • HTTP 메서드 활용: Restful API는 HTTP 메서드를 활용하여 리소스를 다양한 작업(조회, 생성, 수정, 삭제 등)에 대해 처리합니다. 주요 HTTP 메서드인 GET, POST, PUT, DELETE 등이 사용되며, 각 메서드는 특정한 의미와 동작을 가지고 있습니다.

  • 자체 표현(Self-descriptive): Restful API는 메시지 자체에 해당하는 정보를 통해 리소스를 표현합니다. 예를 들면, JSON 또는 XML 형태의 메시지를 통해 리소스를 표현하며, 클라이언트는 이 정보를 통해 리소스를 이해하고 처리할 수 있습니다.

  • 클라이언트-서버 구조: Restful API는 클라이언트와 서버가 독립적으로 발전할 수 있는 구조를 가지고 있습니다. 클라이언트는 사용자 인터페이스를 담당하고, 서버는 비즈니스 로직과 데이터를 처리하는 역할을 담당합니다.

0개의 댓글