Web Dev/ELICE

29 :: 미들웨어, MVC, REST API, Postman

HJPlumtree 2021. 12. 3. 17:54

엘리스 SW 엔지니어 트랙 29일차

온라인 강의날

 

 

웹과 Express.js 좀 더 깊이 들어가는날

 

 

Middleware(미들웨어)

Express.js 동작의 핵심

 

HTTP 요청
-----------
미들웨어
여기서 일어나는 함수
-----------
HTTP 응답

 

next가 없으면 다음으로 안넘어간다

 

Application Middleware 예시

app.use((req, res, next) => {
    console.log(`Request ${req.path}`);
    next()
})

app.use(auth)

// '/' 슬래시가 HTTP 요청
// 그럼 맨 위부터 미들웨어 실행
app.get('/', (req, res, next) =>{
    res.send('Hello Express')
})

 

 

Router Middleware 사용 예시

app 객체에 라우터가 적용되면

라우터의 미들웨어가 순서대로 실행된다

 

 

오류처리 미들웨어(Error Handling Middleware) 사용 예시

next안에 인자가 있으면

중간은 건너뛰고 

err, req, res, next를 인자로 가진

오류 처리 미들웨어가 바로 실행된다

// error handling middleware
app.use((req, res, next) => {
    if(!isAdmin(req)) {
        // next안에 인자가 있으면 오류처리 미들웨어가 바로 실행
        next(new Error('Not Authorized'))
        return
    }
    next()
})

app.get('/', (req, res, next) =>{
    res.send('Hello Express')
})

app.use((err, req, res, next) => {
    res.send('Error Occurred')
})

 

 

함수형 미들웨어(Functional Middleware) 사용 예시

동일한 로직에 설정 값만 다르게

미들웨어를 사용하고 싶을 경우 사용

// 함수형 미들웨어
const auth = (memberType) => {
    return (req, res, next) => {
        if(!checkMember(req, memberType)) {
            next(new Error(`member is not ${memberType}`))
            return
        }
    }
    next()
}

app.use('/admin', auth('admin'), adminRouter)
app.use('/users', auth('member'), adminRouter)

 

이미 만들어진 다양한 미들웨어 사용가능

npm 저장소나 Express.js 홈페이지

Express.js 미들웨어 링크 => https://expressjs.com/en/resources/middleware.html

 

 

REST API (RESTful API)

REST 아키텍쳐를 준수하는 웹 API

 

REST(REpresentation State Transfer)

웹에서 자료를 전송하기 위한 표현 방법

 

URL로 자원 표현 방법

HTTP method로 API 동작 정의만 사용해도

훌륭한 REST API 구현 가능

 

 

JSON

JavaScript Object Notation

객체를 웹 API 통해서 문자열로 전달하기 위해 사용

통신 오버헤드가 엄청 작은 표현 방법

 

 

MVC

대표적인 프로젝트 구성 패턴

프로젝트 기능들을 어떻게 분리할지에 대한 방법

Model - View - Controller

 

Model

데이터에 접근 기능 or 데이터 그 자체

데이터 읽기, 쓰기는 Model 통해서만

 

View

데이터 표현 기능

Controller로 데이터 전달받고

전달받은 데이터 화면에 표시

 

Controller

Model 통해 데이터 접근

처리 결과 View로 전달

웹 서비스에선 주로 라우팅 함수가 이 기능 수행

 

 

Express.js로 REST API 구현

GitHub에 정리 링크=> https://github.com/hjplumtree/Express.js-REST-API-

더 정확한 GitHub 링크 => https://github.com/ChoiKyubum/rest-api-example

 

Postman

API 테스트 도구

HTTP 요청을 쉽게 작성 테스트

API 문서화 기능 및 다양한 도구 제공

 

API 문서화

  • collection 만들기
  • api request 만들기
  • document 작성
  • 전체 문서 확인

 

API 테스트

  • HTTP Method 설정
  • query param 사용
  • path variable 사용
  • body 사용

 

 

어지러운 백엔드

한 눈 팔면 모르고 다 까먹을 것 같다

 

 

happy by Andre Hunger #unsplash