웹프로그래밍/node.js

사용자 조회 API 성공, 실패시

hyun_jo_o 2019. 6. 3. 17:28

성공

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

실패

  • id가 숫자가 아닐 경우 400으로 응답한다
  • id로 유저를 찾을 수 없을 경우 404로 응답한다

index.spec.js 코드 추가

describe('GET /users/1는', ()=> {
    describe('성공시', ()=> {
        it('id가 1인 유저 객체를 반환한다', (done)=> {        //비동기에 대한 처리
            request(app)
                .get('/users/1')
                .end((err, res)=> {
                    res.body.should.have.property('id', 1);   // id가 1인지 검증하는 코드
                    done();
                });
        });
    });
    describe('실패시', ()=> {
        it('id가 숫자가 아닐 경우 400으로 응답한다', (done)=> {        //비동기에 대한 처리
            request(app)
                .get('/users/one')
                .expect(400)
                .end(done);
        });
        it('id로 유저를 찾을 수 없을 경우 404로 응답한다', (done)=> {        //비동기에 대한 처리
            request(app)
                .get('/users/999')
                .expect(404)
                .end(done);
        });
    });
});

 

index.js코드 추가

app.get('/users/:id', function(req, res) {
    const id = parseInt(req.params.id, 10);
    if(Number.isNaN(id)) return res.status(400).end();      //숫자가 아닌 경우 400으로 응답
    
    const user = users.filter((user) => user.id === id)[0];      //filter는 array니까 [0]에 접근해야된다.
    if(!user) return res.status(404).end();         //id로 유저를 찾을 수 없는 경우
    
    res.json(user);
});

실행 결과

▶ filter 특정 조건에 해당하는 값을 다시 반환해서 새로운 array를 만들어냄