Express는 웹 및 모바일 애플리케이션 구축을 위한 광범위한 기능을 제공하는 노드 JS 웹 애플리케이션 프레임워크. 단일 페이지, 다중 페이지 및 하이브리드 웹 애플리케이션을 빌드하는데 사용됨
-> Node.js의 API를 단순화하고 유용한 기능들을 더 추가하여 Node.js를 더 편리하고 유용하게 사용할 수 있도록 해줌
res.send와 res.json은 기능상으로 거의 동일
res.send와 res.json은 외부에서 볼때는 차이가 없어 보이지만 res.send를 사용하면 내부에서 호출이 한 번 더 일어남. 또한 object를 보낼 때에는 res.json()을 이용하는 것이 더 직관적이기도 하므로 res.json()을 이용하는 것을 추천!
response가 있고 데이터를 수집하거나 호출자에게 제공하고 싶은 다른 작업을 수행하면 마지막 단계로 세션을 종료해야 함. 이를 res.end()를 호출하여 수행할 수 있음
데이터를 제공하지 않고 응답을 종료하려면 res.end()를 사용할 수 있음. 이것은 404 페이지에 유용할 수 있음
데이터를 res.json()이나 res.send()로 보내면 알아서 종료됨
둘다 브라우저에 보이는 결과는 똑같음
하지만 Response Header 부분은 다름
res.end에는 Content-Type과 ETag가 없음
ETag 란?
ETag HTTP 응답 헤더는 리소스의 특정 버전에 대한 식별자. 콘텐츠가 변경되지 않은 경우 웹 서버에서 전체 응답을 보낼 필요가 없으므로 캐시를 보다 효율적으로 사용하고 대역폭을 절약할 수 있음
Postman은 개발한 API를 테스트하고, 테스트 결과를 공유하여 API 개발의 생산성을 높여주는 플랫폼
https://www.postman.com/downloads/
미들웨어 기능은 애플리케이션의 요청-응답 주기에서 요청 객체(req), 응답 객체(res), next 미들웨어 함수에 접근할 수 있는 기능. next 미들웨어 기능은 next라는 변수로 표시됨
const express = requrie('express')
const app = express()
// use -> register middleware
app.use(req, res, next) => {
console.log('Time:', Date.now())
next() // 다음 미들웨어로 이동
})
Express 애플리케이션은 본질적으로 일련의 미들웨어 기능 호출임
ex) request -> logger -> bodyParser -> cookieParser -> ... -> response
MVC(모델-뷰-컨트롤러)는 관련 프로그램 로직을 상호 연결된 3개의 요소로 나누어 사용자 인터페이스를 개발하는 데 일반적으로 사용되는 소프트웨어 아키텍쳐 패턴
소프트웨어의 비즈니스 로직과 화면을 구분하는데 중점을 둠
![]()
ex) View: 장바구니에 담기 버튼을 클릭 --Request-->
Controller: Model에게 아이템을 추가하라고 알려줌 --Manipulate-->
Model: 아이템을 추가하고 변경된 모델을 View에게 알려서 화면이 업데이트 되게 함
데이터와 비즈니스 로직을 관리
앱이 포함해야 할 데이터가 무엇인지 정의. 데이터의 상태가 변경되면 일반적으로 뷰에게 알리며 가끔 컨트롤러에게 알리기도 함
주로 어떤 종류의 데이터베이스에 포함되어 있던 것
레이아웃과 화면을 처리
앱의 데이터를 사용자에게 보여지는 방식을 정의. 표시할 데이터를 모델로부터 받음
명령을 모델과 뷰로 라우팅
사용자의 입력에 대한 응답으로 모델 또는 뷰를 업데이트하는 로직을 포함
단순히 데이터를 다른 형태로 나타내기 위해 뷰를 업데이트할 경우, (ex. 항목을 알파벳 순서로 정렬, 가격이 낮은 순으로 정렬) 컨트롤러는 모델을 업데이트할 필요 없이 바로 처리할 수 있음
클라이언트의 요청 경로(path)에 따라 이 요청을 처리할 수 있는 곳으로 기능을 전달해주는 것
Restful API는 두 컴퓨터 시스템이 인터넷을 통해 정보를 안전하게 교환하기 위해 사용하는 인터페이스. 대부분의 비즈니스 애플리케이션은 다양한 태스크를 수행하기 위해 다른 내부 애플리케이션 및 서드 파티 애플리케이션과 통신해야함
-> 이런한 통신을 할 때 안전하고 효율적이게 하기위해 사용
REST(Representational State Transfer)는 처음에 인터넷과 같은 복잡한 네트워크에서 통신을 관리하기 위한 지침. REST 기반의 아키텍처를 사용해서 대규모 고성능 통신을 안정적으로 지원