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

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

728x90

엘리스 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( RE presentation S tate T ransfer)

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

URL로 자원 표현 방법 과

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

훌륭한 REST API 구현 가능

JSON

J ava S cript O bject N otation

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

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

MVC

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

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

M odel - V iew - C ontroller

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

from http://forgottenknowledge.tistory.com/210 by ccl(A) rewrite - 2021-12-03 18:02:10