블로그 프로젝트를 마무리 했다...
상상이상으로 처음배우는 툴을 이용해 구현하려고하니 어려웠다.
그래도 대부분의 기능을 spring이 다 해줬기 때문에 할만했었다.
문제점
1. password String 데이터를 RequestBody로 받아올 때 값을 제대로 읽지 못함.
2. @RequestParam을 이용해 데이터를 객체형태로 받아오는데 오류가 발생함.
시도한 것
1번은 구글링하여 방법을 찾음
2번은
- RequestParam을 여러개 사용해봤다. 코드가 지저분해지고, 많은 작업이 필요해서 옳은 방법이 아니라 판단
- 구글링해서 @RequestParam을 선언하지 않고, 객체형태로 선언하고, 필드명을 같게하면 알아서 매핑해준다는 글을 발견하고 시도해봤지만 500번에러...
해결
1번은 Body로 받아올 때 json형태로 받아와져서 생기는 문제였다.
받아오는 매개변수 타입을 Map으로 선언하고 해당 키값에 따른 밸류를 출력해줬더니 성공!
@DeleteMapping("/blog/{id}")
public String deletePost(@PathVariable Long id, @RequestBody Map<String,String> password) {
return postService.deletePost(id,password.get("password"));//수정
}
2번은 태선튜터님에게 질문하고 알게된 것인데, 기본생성자가 없어서 발생한 현상...
객체형태로 선언하면 spring이 알아서 생성하고 생성한 객체 필드에 맞는 이름들을 매핑시키는데, 그 과정에서 기본생성자가 없어 생성이 되지않아 매핑을 할 수 없어 일어난 에러였던 것!
알게된 것
이런 spring에서 지원해주는 기능에도 기본생성자가 필요한 부분이 있다는 걸 알았고, 스프링 기본 기능들도 내부에서 어떻게 돌아가는지 알고있는게 좋겠다고 생각했다.