sitelink1 | https://tacademy.skplanet.com/live/playe...mp;seq=134 |
---|---|
sitelink2 | https://youtu.be/-ARhHXVkdrQ |
sitelink3 | |
extra_vars4 | |
extra_vars5 | |
extra_vars6 |
1. API 관리용 폴더를 만들고 소스코드를 위치시킨다
root/api/user/index.js 작성
let users = [
{id:1, name:'Alice'},
{id:2, name:'Bek'},
{id:3, name:'Chris'}
]
app.get('/', (req, res) => res.send('Hello World!'))
app.get('/users', (req, res) => {
})
app.get('/users/:id', (req, res) => {
})
app.delete('/users/:id', (req, res) => {
})
app.post('/users', (req, res) => {
})
2. Router 클래스를 이용한다
1) 기능 : get,delete,post 함수를 Router클래스가 제공해준다
const express = require('express')
const router = express.Router()
router.use(function timeLog(req,res,next) {
console.log('Time: ', Date.now())
next()
})
router.get(...)
router.delete(...)
router.post(...)
module.exports = router //module로 만들어서 root의 index.js에서 사용할 수 있게 한다
2) root/index.js 에서는 생성한 module을 사용한다
const user = require('./api/user') //마지막 index라는 키워드는 생략이 가능하다 require('./api/user/index.js') 와 같음
app.use('/users', user) //users에 대한 모든 경로에 대해서는 user router를 사용하겠다
3. Router를 Control 단위로 세분화 한다
1) root/api/user/user.ctrl.js 파일을 생성한다
user/index.js에 작성했던 app.get()~ 등의 함수 코드를 다음과 같이 옮겨 올 수 있다
const index = (req, res) => { ...
}
const show = (req, res) => { ...
}
module.exports = {
index,
show
}
2) root/api/user/index.js 에서는 다음과 같이 생성한 control들을 사용할 수가 있다
const ctrl = require('./user.ctrl')
router.get('/', ctrl.index)
router.get('/:id', ctrl.show)
3) control이 사용하는 데이터도 함께 ctrl 소스 파일로 옮겨와야 한다
let users = [
{id:1, name:'Alice'},
{id:2, name:'Bek'},
{id:3, name:'Chris'}
]
4. Test Case를 작성한 테스트 파일들도 소스 코드들과 같은 경로로 옮겨준다
가령, root/api/user 폴더 안에 생성한 index.js 의 router 테스트 파일 index.spec.js은
root/api/user/user.spec.js 으로 명명하여 옮기고 내부에서 root/index.js를 require하는 코드의 경로도 상대 경로로 바꿔준다
=> const app = require('../../index')
5. package.json 내에 선언한 scripts test 파일들에 대한 설정 내용도 다음과 같이 바꾼다
"scripts" : {
"test" : "mocha ./api/**/*.spec.js" <- api경로 아래의 모든 *.spec.js 파일들을 테스트하겠다
}
댓글 0
번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
---|---|---|---|---|
» | [TDD/REST-7강] 코드 리팩토링 (express.Router, control) | 황제낙엽 | 2020.12.04 | 87 |
4 | [TDD/REST-6강] 사용자 API 개발 | 황제낙엽 | 2020.12.03 | 81 |
3 |
[TDD/REST-목차][T아카데미] Node.js 기반의 REST API 서버 개발
![]() | 황제낙엽 | 2020.12.03 | 77 |
2 | [TDD/REST-5강] TDD로 API 서버 개발 (작업절차, get users 테스트) | 황제낙엽 | 2020.12.01 | 82 |
1 | [TDD/REST-4강] TDD 이해 및 환경 구축 (Rest API, TDD, mocha, Should, SuperTest) | 황제낙엽 | 2020.12.01 | 83 |