Express.js

박효상·2022년 1월 16일
0

BACKEND-TIL

목록 보기
3/21
post-thumbnail

Express.js란?

  • Node.js로 서버 개발시 쉽게 서버를 구성할 수 있게 편리한 기능을 제공하는 웹 서버 프레임워크
  • Node.js의 핵심 모듈인 http와 connect 컴포넌트(미들웨어)를 기반
  • 개발자는 Express가 제공하는 미들웨어 중 필요한 것만 선택하여 서버 구현
  • Express를 통해 서버 개발시 코드가 간결해지고 가독성이 높아져 직관적으로 이해 가능

Express.js 특징

  • Node.js의 HTTP 모듈 없이 간단한 서버 구현 가능
    • 편의성, 가독성 증가
  • 강력한 미들웨어 지원
  • 라우팅을 깔끔하게 관리 가능

Express.js 미들웨어

  • 클라이언트의 API 요청이 들어왔을 때부터 서버가 응답을 내보내기 까지 여러 함수들을 거지게 되는데 그 함수 중 하나가 미들웨어
  • 요청과 응답을 조작하여 기능을 추가하거나 예외처리 등을 수행하는 Express 동작 방식의 핵심
  • 미들웨어에선 다음 기능으로 통과시킬지 말지 결정할 수 있어 여러 기능 실행 전 수행해야 할 기능을 만들 수 있게 된다
  • 할 일을 수행한 후 매개변수인 next()를 통해 다음에 위치한 미들웨어 또는 client의 요청 자원 경로(URI)로 이동
  • 인증/인가 미들웨어 : Customized된 인증/인가 미들웨어를 인증/인가가 필요한 API에 등록하면, 해당 API 요청이 들어올 경우 미들웨어를 거치게 되어 인증/인가 성공시 API를 실행하고 실패시엔 에러 발생
  • Third Party Middleware : 이미 Node.js 패키지에 존재하는 미들웨어로서 app.use(..) 의 명령어로 서버에 적용
    • cors() : Cross-Origin-Resource-Sharing의 줄임말로서, 기존 출처가 아닌 다른 출처의 리소스를 요청하고 가져올 수 있는 권한을 부여하도록 브라우저에 알려주는 체제. app.use(cors())를 통해 모든 도메인에서 제한 없이 해당 서버에 요청을 보내고 응답을 받을 수 있게 된다
    • express.json() : 클라이언트로부터 요청과 함께 들어오는 Json 형태의 payload를 파싱하는 미들웨어. Request body를 통해 Json 데이터를 받을 수 있게 된다
    • morgan() : 클라이언트가 요청한 메서드나 응답 등의 로그를 남겨주는 미들웨어

Express.js 라우팅

애플리케이션 엔드포인트 즉 URI 경로를 정의하고 URI가 클라이언트 요청에 응답하는 방법을 결정하는 것

Express.js 라우터

  • 라우팅을 쉽게 처리할 수 있도록 Express에서 제공하는 클래스이자 미들웨어
  • express.Router()를 통해 생성한 라우터 객체에 여러 라우트들을 담은 뒤 exports해서 모듈화가 가능해졌다
    • 유지보수의 편의성과 가독성이 증가
  • 하나의 라우트는 express의 인스턴스인 app, HTTP 요청 메서드, 서버에서의 경로인 PATH, 라우트가 일치할 때 실행되는 함수인 Handler로 구성
  • ex) app.METHOD(PATH, HANDLER FUNC)

Express.js로 간단한 서버 구현

const express = require('express')
const app = express()
const PORT = 8000
app.get('/', (req, res) => {
  res.send('Hello World')
})
app.listen(PORT, () => {
  console.log(`Server is listening on PORT ${port}`)
})
profile
집념의 백엔드 개발자

0개의 댓글