Express 미들웨어,REST/REST API/ RESTful

이준교·2023년 4월 17일
0

node.js를 배우기 시작하며 그 개념과 기능들을 공부하기 시작하였다
나는 아직 그 개념을 완전히 이해하기 힘든 단계이므로 완전히 숙지하기 위해 잠깐 정리하는 시간을 가져보자
(이렇게 느린걸 보면 난 아마 전생에 거북이였나보다.... )

Express란?

express 란 우선 Node.js에서 서버를 구축할 때 간편하고 빠르게 만들 수 있도록 도와주는 프레임워크
즉 서버 = express 가 아니다.

그렇다면 미들웨어란?

expressjs.com에서는 미들웨어 함수는 요청 오브젝트(req), 응답 오브젝트 (res), 그리고 애플리케이션의 요청-응답 주기 중 그 다음의 미들웨어 함수 대한 액세스 권한을 갖는 함수입니다. 그 다음의 미들웨어 함수는 일반적으로 next라는 이름의 변수로 표시됩니다.
로 정의되고 있다.
간단히 말해 요청이 들어오고 응답하는 과정 중 중간에서 엑세스 권한을 가지는 미들웨어 함수 라고 이해했다.
현재의 미들웨어 함수가 요청 - 응답 주기를 종료하지 않는 경우에는 next ()를 호출하여 다음 미들웨어 함수에 제어를 전달해야 한다
그렇지 않으면 해당 요청은 정지된채로 방치!

app.get('/', (req, res) => {
});
의 구조를 눈에 익히자!

  • 정리
    요청과 응답의 중간에 위치 -> 미들웨어
    미들웨어는 req(요청),res(응답),next(다음 미들웨어 실행)를 매개변수로 가지는 함수
    미들웨어 함수는 여러번 인자로 사용 가능

REST란?

Representational State Transfer 의 약자로 자원을 이름으로 구분하여 해당 자원의 상태를 주고 받는 모든 것을 의미

HTTP URI - 자원
HTTP METHOD - 행위
HTTP Message Pay Load - 행위

REST는 다음과 같은 특징들을 가진다

Server - Client 구조

REST 서버는 API 제공, 클라이언트는 사용자 인증이나 세션,로그인 정보 등을 직접 관리하는 구조로 역확이 각각 구분
즉, 서버와 클라이언트 간 역활을 확실히 구분하여 서로간의 의존성일 줄어든다

Uniform Interface

URI로 지정한 리소스에 대한 조작을 통이로디고 한정적인 인터페이스로 수행하는 아키텍쳐 스타일

Stateless

REST는 무상태성 즉, 작업을 위한 상태정보를 따로 저장하고 관리하지 않음
별도의 정보를 따로 저장하지 않고 들어오는 요청만을 단순 처리하므로 구현이 단순해지고 서비스의 자유도가 높아진다

Casheable

HTTP라는 기존 웹표준을 그대로 사용하기 때문에 웹에서 사용하는 기존 인프라를 그대로 활용 가능
HTTP 프로토콜 표준에서 사용하는 Last-Modified, E-Tag를 이용하면 캐싱 구현이 가능

Layered System

계층형 구조이다
다중 계층으로 구성될 수 있으며 구조상의 유연상을 둘 수 있고 네트워크 기반의 중간매체를 사용할 수 있게 함

REST API 란?

REST를 따르는 API를 의미

REST API를 설계할때는 주의할 점(대부분 가독성을 위한 고민)

URI는 동사보다는 명사를 사용, 대문자보다는 소문자를 사용

동사보다는 명사가 무엇을 위해 동작하는지 더 명확히 알 수 있다.
URI 문법 형식은 스키마와 호스트를 제외하고는 대소문자를 구별하도록 규정하기에 다른 리소스로 인식하게 되므로 가급적 소문자를 사용

마지막에 (/)는 사용하지 않는다

URI에 포함되는 모든 글자는 리소스의 유일한 식별자로 사용되어야 한다
마지막에 /를 사용하게되면 혼동을 줄 수 있음

언더바(_) 대신 하이픈(-)을 사용하자

폰트등에 따라 다를 수 있겠지만 보통 언더바보다는 하이픈이 가독성이 높아 구분이 잘 된다

파일 확장자는 포함시키지 않는다

Accept header를 사용하자

RESTful이란?

REST스럽다.
REST의 원리를 잘 따르는 시스템을 의미
즉 REST를 그냥 사용한게 아닌 REST API의 설계 규칙을 올바르게 지킨 시스템에 대하여 RESTful하다 할 수 있다.
언제 어디서나 규칙을 잘 따른다는 것은 원활한 커뮤니케이션에 도움을 준다!

profile
어떻게든 해내는 개발자, 이준교입니다

0개의 댓글