문제: 메모장 만들기 실습에서 메모를 저장하는 POST 가 구현되지 않았다.
[입력 코드]
package com.sparta.memo.controller;
import com.sparta.memo.dto.MemoRequestDto;
import com.sparta.memo.dto.MemoResponseDto;
import com.sparta.memo.entity.Memo;
import org.apache.catalina.users.MemoryRole;
import org.springframework.web.bind.annotation.*;
import java.util.*;
@RestController
@RequestMapping("/api")
public class MemoController {
private final Map<Long, Memo> memoList = new HashMap<>();
@PostMapping("/mamos")
public MemoResponseDto createMemo(@RequestBody MemoRequestDto requestDto) {
// RequestDTO -> Entity 저장해야하니까
Memo memo = new Memo(requestDto);
//Memo Max ID Check
Long maxID = memoList.size() > 0 ? Collections.max(memoList.keySet()) + 1 : 1;
// memo의 최댓값, 중복을 피하기 위해 +1
memo.setId(maxID);
// DB 저장
memoList.put(memo.getId(), memo);
// Entity -> ResponseDto
MemoResponseDto memoResponseDto = new MemoResponseDto(memo);
return memoResponseDto;
}
// 조회하는 api
@GetMapping ("/memos")
public List<MemoResponseDto> getMemos() {
// Map To List
List<MemoResponseDto> responseList = memoList.values().stream()
.map(MemoResponseDto::new).toList();
// stream = values를 for문처럼 돌려줌
// Map은 튀어나오는 memo를 변환
return responseList;
}
}
에러 메시지
2023-06-13T19:40:02.948+09:00 WARN 41620 --- [nio-8080-exec-6] .w.s.m.s.DefaultHandlerExceptionResolver : Resolved [org.springframework.web.HttpRequestMethodNotSupportedException: Request method 'POST' is not supported]
누가봐도 POST 메소드가 문제라는 것을 알려준다.
시도: 코드를 찬찬히 보고 혹여나 response를 request로 적은 것은 아닌지 확인하였다.
해결: 아니나다를까 여기 오타가 원인이었다. POST 메소드 안에 경로 설정에서 /memos 를 /mamos라고 적어놔서 홈페이지가 실행되지 않고 있었다.
새 앎: 오타는 개발자에게 필수불가결한(?) 점검하고 점검해야하는 예측가능한 예외(?)이니 잊지말고 체크하자.
'TIL (Today I Learned)' 카테고리의 다른 글
WIL) 내일 무리하지 않도록 오늘 해냄으로서 내일의 번아웃을 방지하기 (0) | 2023.06.18 |
---|---|
TIL) 코드 작성 시, 괄호 조심하자! ( )/{ } (0) | 2023.06.15 |
TIL) MySQL 데이터베이스 생성하는 법 (0) | 2023.06.13 |
WIL) 6월 2째주 주간회고 / Java 문법과 키오스크 관리자 모드 만들기 (0) | 2023.06.11 |
TIL) If문, 넌 내꺼야 (੭ꐦ •̀Д•́ )੭* ᑦᵒᔿᵉ ᵒᐢᵎᵎ (0) | 2023.06.09 |