엘리스 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 사용
어지러운 백엔드
한 눈 팔면 모르고 다 까먹을 것 같다
'Web Dev > ELICE' 카테고리의 다른 글
31 :: 데이터베이스, SQL, NoSQL, express, Mongoose 실습 (0) | 2021.12.07 |
---|---|
30 :: MongoDB, No SQL, Mongoose, Express + MongoDB (0) | 2021.12.04 |
28 :: Router, 미들웨어, API (0) | 2021.12.02 |
27 (3/3) :: Node.js 웹 프레임워크, 라우팅, Express.js (0) | 2021.12.01 |
27 (2/3) :: npm, npx, node 모듈, ES Module (0) | 2021.12.01 |