NodeJs

TDD[6] 사용자목록 및 사용자 상세정보 API개발

코딩클로스 2021. 3. 31. 20:25

GET /user/:id

유저한명 정보

 

success

• id가 1인 유저 객체를 반환한다

 

error

• id가 숫자가 아닐경우 400으로 응답한다

• id로 유저를 찾을수 없을 경우 404로 응답한다

 

이번에는 쿼리를 사용하지 않고 id 식별자로 구분해볼거다

 

 

const express = require('express')
const logger = require('morgan')
const app = express()
const 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) => {
  req.query.limit = req.query.limit || 10; //limit에 값이 없다면 0을넣자
  const limit = parseInt(req.query.limit, 10);

  if (Number.isNaN(limit)) {
    res.status(400).end();
  }
  else {
    res.json(users.slice(0, limit));
  }
})

app.get('/users/:id', (req,res) => { //이 아이디 부분은 다이나믹하게 들어오는데 라우트 핸들러로 id 값으로 그냥 인식 
  //id 값을 얻어낸다  이번에는 쿼리로 안가져오고 params로 가져온다   총 3가지임  쿼리 바디 파람스
  // '/users/:id'  -> path라고함
  const id = parseInt(req.params.id, 10) // 10 진수로 변환
  
  if (Number.isNaN(id)){
    return res.status(400).end()
  }
  // users 배열 조회 
  const user = users.filter(user => user.id === id)[0] //필터함수는 어레이를 다 하나씩 돌면서 비교하고 같은것들만 어레이로 반환함 그래서 첫번쨰에 들어있을꺼니간 [0]을 사용함
  if (!user){
    return res.status(404).end()
  }
  res.json(user)
})

module.exports = app

 

DELETE /user/:id

유저삭제

 

success

• 204를 응답한다.

 

error

• id가 숫자가 아닐경우 400으로 응답한다

 

 

POST /users

success

• 201 상태코드를 반환한다

• 생성된 유저 객체를 반환한다

• 입력한 name을 반환한다

 

 error

• name 파라매터 누락시 400을 반환한다

• name이 중복일 경우 409를 반환한다

 

PUT /users/

success

• 변경된 name을 응답한다

 

 error

• 정수가 아닌 id일 경우 400 응답

• name이 없을 경우 400 응답

• 없는 유저일 경우 404 응답

• 이름이 중복일 경우 409 응답