[SPRING] 메모장 API UPDATE, DELETE구현

라미·2024년 2월 24일

spring

목록 보기
3/17
post-thumbnail

메모장 API UPDATE, DELETE

🐥 메모장 API
기능 | Method | URL | Return
---------|------------|-----------------|-----------------------
메모 생성하기 | POST | /api/memos | MemoResponseDto
메모 조회하기| GET | /api/memos | List
메모 변경하기 | PUT | /api/memos/{id} | Long
메모 삭제하기 | DELETE | /api/memos/{id} | Long


UPDATE & DELETE

📝 Controller

@PutMapping("/memos/{id}") //수정할 내용이 바디에 json 형식으로 넘어온다.
public Long updateMemo(@PathVariable Long id, @RequestBody MemoRequestDto requestDto) {
    // 수정할 메모가 존재하는지 확인
    // memoList.containsKey(id) -> map.containsKey(key) 해당하는 키가 존재하는 boolean 값으로 반환
    if (memoList.containsKey(id)) {
        // 해당 메모 가져오기
        Memo memo = memoList.get(id);

        // memo 수정
        memo.update(requestDto);
        return memo.getId();
    } else {
        throw new IllegalArgumentException("선택한 메모는 존재하지 않습니다");
    }
}

@DeleteMapping("/memos/{id}")
public Long deleteMemo(@PathVariable Long id) {
    //해당 메모 존재하는지 확인
    if (memoList.containsKey(id)) {
        //해당 메모 삭제
        memoList.remove(id);
        return id; //204 http 상태코드랑 id 어떤게 지워졌는지 반환했는지 확인하기 위해서 id 반환해준다.
    } else {
        throw new IllegalArgumentException("선택한 메모는 존재하지 않습니다");
    }
}

📝 Memo.java

// update 메서드 추가
public void update(MemoRequestDto requestDto) {
    this.username = requestDto.getUsername();
    this.contents = requestDto.getContents();
}

UPDATE는 PUT method, Delete는 DELETE method가 사용된다.

의문점 delete에서는 왜 다시 id를 return 해주지? 이미 삭제된 id인데?

→ 기술멘토님께서 여쭤봤더니 삭제를 성공했을 때, 상태코드와 함께 어떤 게시물이삭제됐는지 파악할 수 있도록 id를 함께 반환해주는거라고 알려주셨다. 왜 return 해 주나 궁금했는데 해결이 됐다!

0개의 댓글