UPDATE, DELETE 를 사용할 때 비밀번호를 입력하는 방법을 몰라서
form-data 형식으로 보냈더니
Resolved [org.springframework.web.HttpMediaTypeNotSupportedException: Content-Type 'multipart/form-data;boundary=--------------------------693561880579161750451056;charset=UTF-8' is not supported]
이런 오류 메세지가 떴다.
@PutMapping("/memos/{id}")
public Long updateMemo(@PathVariable Long id, @RequestBody MemoRequestDto memoRequestDto, @RequestBody String password) {
if (memoList.containsKey(id)) {
Memo memo = memoList.get(id);
if(password.equals(memo.getPassword())){
memo.setModifiedAt(timeNow());
memo.update(memoRequestDto);
return memo.getId();
}else{
throw new IllegalArgumentException("비밀번호가 틀렸습니다.");
}
} else {
throw new IllegalArgumentException("선택한 메모는 존재하지 않습니다.");
}
}
@RequestBody 를 달아줬기 때문에 JSON 으로만 데이터를 보내줘야 한다고 한다.
Postman에서 form-data로 보내도 JSON 으로 이해할 줄 알았다.
마찬가지로 오류 메세지가 떴다.
Resolved [org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Unexpected character ('{' (code 123)): was expecting double-quote to start field name]
@DeleteMapping("/memos/{id}")
public Long deleteMemo(@PathVariable Long id, @RequestBody String password) {
if (memoList.containsKey(id)) {
Memo memo = memoList.get(id);
if(password.equals(memo.getPassword())){
memoList.remove(id);
return id;
}else {
throw new IllegalArgumentException("비밀번호가 틀렸습니다.");
}
} else {
throw new IllegalArgumentException("선택한 메모는 존재하지 않습니다.");
}
}
비교적 간단한 delete로 테스트 해보았으나 게시글이 삭제되지 않았다.
하지만 password가 일치하고, remove를 해야 나오는 리턴값인 id가 제대로 반환되었다.