230615 PUT postman 테스트

보트·2023년 6월 15일
1

Spring

목록 보기
3/27

UPDATE

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]

DELETE

    @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가 제대로 반환되었다.

profile
일주일에 한 번

0개의 댓글