02. Express

surra77·2024년 3월 26일

33. Express란?

Express는 웹 및 모바일 애플리케이션 구축을 위한 광범위한 기능을 제공하는 노드 JS 웹 애플리케이션 프레임워크. 단일 페이지, 다중 페이지 및 하이브리드 웹 애플리케이션을 빌드하는데 사용됨
-> Node.js의 API를 단순화하고 유용한 기능들을 더 추가하여 Node.js를 더 편리하고 유용하게 사용할 수 있도록 해줌

Express js를 사용하는 이유

  • Node.js의 API를 쉽게 사용할 수 있게 함
  • 많은 사람들이 사용중
  • ExpressJS를 기반으로 하는 다른 프레임워크들도 만들어지고 있기 때문에, 이 프레임워크 하나만 배우면 다른 노드 js 프레임워크도 빠르게 배울 수 있음

36. res.json vs res.send

res.send와 res.json은 기능상으로 거의 동일

res.json 소스 코드

  1. res.json(object)로 필요한 값들을 설정
    1. 먼저 object로 들어오는 value들을 JSON 문자열로 변환
    2. Content-Type 헤더가 셋팅되지 않았을 경우 this(res 객체)에 Content-Type으로 application/json을 셋팅
  2. res.send(body)를 실행

res.send 소스 코드

  1. res.send(object)로 body의 타입 체크
  2. 타입이 object일 경우 res.json(object) 호출
    1. JSON 문자열로 변환
    2. 다시 res.send(string) 호출

결론

res.send와 res.json은 외부에서 볼때는 차이가 없어 보이지만 res.send를 사용하면 내부에서 호출이 한 번 더 일어남. 또한 object를 보낼 때에는 res.json()을 이용하는 것이 더 직관적이기도 하므로 res.json()을 이용하는 것을 추천!


37. res.send vs res.end

res.end()

response가 있고 데이터를 수집하거나 호출자에게 제공하고 싶은 다른 작업을 수행하면 마지막 단계로 세션을 종료해야 함. 이를 res.end()를 호출하여 수행할 수 있음

꼭 res.end()를 이용해서 세션을 종료해야 하나요?

  • res.end()로 종료해야하는 때

    데이터를 제공하지 않고 응답을 종료하려면 res.end()를 사용할 수 있음. 이것은 404 페이지에 유용할 수 있음

  • res.end()로 종료하지 않아도 되는 때

    데이터를 res.json()이나 res.send()로 보내면 알아서 종료됨

res.end('<p>some html</p>') vs. res.send('<p>some html</p>')

둘다 브라우저에 보이는 결과는 똑같음

하지만 Response Header 부분은 다름
res.end에는 Content-Type과 ETag가 없음

ETag 란?
ETag HTTP 응답 헤더는 리소스의 특정 버전에 대한 식별자. 콘텐츠가 변경되지 않은 경우 웹 서버에서 전체 응답을 보낼 필요가 없으므로 캐시를 보다 효율적으로 사용하고 대역폭을 절약할 수 있음


38. 포스트맨

Postman은 개발한 API를 테스트하고, 테스트 결과를 공유하여 API 개발의 생산성을 높여주는 플랫폼

https://www.postman.com/downloads/


40. middleware

미들웨어 기능은 애플리케이션의 요청-응답 주기에서 요청 객체(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


43. Model, View, Controller

MVC Pattern

MVC(모델-뷰-컨트롤러)는 관련 프로그램 로직을 상호 연결된 3개의 요소로 나누어 사용자 인터페이스를 개발하는 데 일반적으로 사용되는 소프트웨어 아키텍쳐 패턴
소프트웨어의 비즈니스 로직과 화면을 구분하는데 중점을 둠

MVC

ex) View: 장바구니에 담기 버튼을 클릭 --Request-->
Controller: Model에게 아이템을 추가하라고 알려줌 --Manipulate-->
Model: 아이템을 추가하고 변경된 모델을 View에게 알려서 화면이 업데이트 되게 함

Model

데이터와 비즈니스 로직을 관리
앱이 포함해야 할 데이터가 무엇인지 정의. 데이터의 상태가 변경되면 일반적으로 뷰에게 알리며 가끔 컨트롤러에게 알리기도 함
주로 어떤 종류의 데이터베이스에 포함되어 있던 것

View

레이아웃과 화면을 처리
앱의 데이터를 사용자에게 보여지는 방식을 정의. 표시할 데이터를 모델로부터 받음

Controller

명령을 모델과 뷰로 라우팅
사용자의 입력에 대한 응답으로 모델 또는 뷰를 업데이트하는 로직을 포함
단순히 데이터를 다른 형태로 나타내기 위해 뷰를 업데이트할 경우, (ex. 항목을 알파벳 순서로 정렬, 가격이 낮은 순으로 정렬) 컨트롤러는 모델을 업데이트할 필요 없이 바로 처리할 수 있음


45. Router, Controller

Router 란

클라이언트의 요청 경로(path)에 따라 이 요청을 처리할 수 있는 곳으로 기능을 전달해주는 것


46. Restful API

Restful API는 두 컴퓨터 시스템이 인터넷을 통해 정보를 안전하게 교환하기 위해 사용하는 인터페이스. 대부분의 비즈니스 애플리케이션은 다양한 태스크를 수행하기 위해 다른 내부 애플리케이션 및 서드 파티 애플리케이션과 통신해야함
-> 이런한 통신을 할 때 안전하고 효율적이게 하기위해 사용

Rest

REST(Representational State Transfer)는 처음에 인터넷과 같은 복잡한 네트워크에서 통신을 관리하기 위한 지침. REST 기반의 아키텍처를 사용해서 대규모 고성능 통신을 안정적으로 지원

  • GET: 데이터를 서버로부터 받아옴
  • POST: 무언가를 생성하기 위해 서버에 데이터 블록을 수락하도록 요청
  • PUT: 데이터 전체를 업데이트
  • PATCH: 데이터 일부를 업데이트
  • DELETE: 데이터를 삭제
  • 슬래시 구분자(/)는 계층 관계를 나타냄
  • 띄어쓰기는 밑줄(_)보다는 하이픈(-) 사용
profile
개발자 준비생

0개의 댓글