이전 글에서는 GET 요청에 대해서 알아봤다.

이번엔 DELETE문에 대해서 알아보자

 

DELETE

DELETE문 도 어려운건 딱히 없다.

현재 구현한 delete구문을 살펴보자

Controller의 delete end-point

@Delete(':id')
remove(@Param('id', ParseIntPipe) id: number): Promise<void> {
  return this.boardService.delete(id);
}
  • @Delete(':id') : DELETE HTTP 메서드와 경로 매개변수 정의
  • ParseIntPipe : URL로 받은 id 문자열을 숫자로 변환
    • main.ts의 ValidationPipe transform 설정이 true로 설정돼있다면 빼도 상관없다.
    • 커스텀으로 에러관리를 하려면 넣어주자
  • Promise<void> : 삭제 성공 시 아무 것도 반환하지 않음

Service의 delete 메서드

async delete(id: number): Promise<void> {
  const board = await this.getOne(id);  // 게시글 존재 확인
  await this.boardRepository.remove(board);  // 존재하면 삭제
}

사용예시

// React에서 삭제 요청
const deleteBoard = async (id: number) => {
  try {
    await axios.delete(`http://localhost:5000/board/${id}`);
    console.log('삭제 성공');
  } catch (error) {
    if (axios.isAxiosError(error)) {
      if (error.response?.status === 404) {
        alert('게시글을 찾을 수 없습니다.');
      } else {
        alert('삭제 중 오류가 발생했습니다.');
      }
    }
  }
};