WIL.2 Node.js - Express 미들웨어, RESTful
Node.js는 Express 프레임워크를 사용한다.
Express
Node.js를 사용해 쉽게 서버를 구성할 수 있게 만드는 라이브러리이다.
express를 통해 가볍고 유연한 웹 프레임 워크를 구성하는 것이 가능한데 이는 Middleware구조 덕분에 가능하다.
자바스크립트 코드로 작성된 다양한 기능의 미들웨어는 개발자가 필요한 것만 선택하여 익스프레스와 결합하여 사용할 수 있다.
Middleware
미들웨어라는 이름답게 요청에 대한 응답 과정 중간에 위치하여 동작을 수행해주는 프로그램이다.
express는 요청이 들어올 때 그에 대한 응답을 보내주는데 응답을 보내기 전 미들웨어가 지정한 동작을 수행한다.
미들웨어에는 수 많은 것들이 존재하는데 Morgan, Compression, Session, Body-parser, Cookie-parser, Method-override, Cors, Multer등이 있고 모두 npm에서 다운받을 수 있다.
- Morgan - 익스프레스 프레임워크가 동작하면서 나오는 메세지를 콘솔에 표시해준다.
- Compression - 페이지를 압축해서 전송해준다.
- Session - 세션을 전송
- Body-parser - 폼에서 전송되는 POST값을 전송해준다.
- Cookie-parser - 쿠키를 사용할 수 있게 해준다.
- Method-override - form에서 PUT와 DELETE 메소드를 사용할 수 있게 해준다.
- Cors - 크로스오리진(다른 도메인간 AJAX요청)을 가능하게 해준다.
- Multer - 파일 업로드시 사용된다
미들웨어는 function(req,res,next){ } 해당 식으로 작성이 가능하며 request와 response를 매개변수로 받아 조작이 가능하고 next를 작성해주지 않으면 더 이상 진행이 되지 않기 때문에 꼭 함께 작성해주어야 하고 next를 통해 순차적으로 처리 되기에 순서가 중요하다.
미들웨어에는 다양한 유형이 존재하는데
- 어플리케이션 레벨 미들웨어
- 라우터 레벨 미들웨어
- 오류 처리 미들웨어
- 써드파티 미들웨어
위에 관한 자세한 내용은 참고사이트를 통해 확인할 수 있었다.
혹시나 에러가 발생했을 경우 next(에러) 같이 next의 인자로 error정보를 넣어 라우팅부분으로 넘겨주며 해당 에러는 라우팅에서 처리한다. 이는 express의 또다른 장점이다.
Routing
라우팅은 클라이언트에서 보내는 주소에 따라 다르게 처리되는 것을 의미한다.익스프레스는 REAT API에 따라 처리되는데 이는 굉장히 간단하며 해당 사이트를 통해 참고가능하다.
RESTful
REST는 Representational State Transfer의 약자로 월드 와이드웹과 같은 하이퍼미디어 시스셈을 위한 소프트웨어 아키텍쳐중 하나의 형식이다. REST서버는 클라이언트로 부터 HTTP프로토콜을 사용해 서버 정보에 접근 및 변경을 가능하게 하며 정보의 형식으로는 Text, Xm , Json등이 존재한다. 즉 REST란 어떤 자원에 대해 CRUD(Create, Read, Update, Deltete) 연산을 수행하기 위해 URL(Resource)로 요청을 보내는 것으로 GET,POST등의 메소드를 사용하여 요청을 보낸다. REST API의 구성요소는 Resource, Method, Representation of Resource로 구성되며 해당사이트를 통해 자세한 내용확인이 가능하다.
URI 와 URL의 차이
URL (Uinform Resource Locator)은 인터넷 상 자원의 위치 (어떠한 파일의 위치)를 의미하고
URI (Uniform Resource Identifier) 는 인터넷 상의 자원을 식별하기 위한 문자열의 구성으로 URI는 URL을 포함하게 된다.