🐥 메모장 API
기능 | Method | URL | Return
---------|------------|-----------------|-----------------------
메모 생성하기 | POST | /api/memos | MemoResponseDto
메모 조회하기| GET | /api/memos | List
메모 변경하기 | PUT | /api/memos/{id} | Long
메모 삭제하기 | DELETE | /api/memos/{id} | Long
📝 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 해 주나 궁금했는데 해결이 됐다!