TroubleShooting

[Springboot] 405 error

KJihun 2023. 6. 27. 20:34
728x90

오늘은 Springboot로 게시판을 만들었다.

 

 

문제

처음에 비밀번호 인증을 구현하는 데에 있어서 405 에러가 발생했다.

405 에러는 client 가 server 가 요청하지 않는 method를 사용하였을 때 발생한다고 한다,

 

 


 

시도

Service code를 하나하나 주석처리 하면서 어디서 에러가 발생하는지 찾아봤다.

에러는 DB의 패스워드와 입력받은 패스워드를 비교하는 if문에서 원하지 않는 값을 반환한다는 걸 알게 됐다.

 


 

해결

같은 값을 넣어도 if문에서 DB의 패스워드와 입력값의 패스워드가 일치하지 않았었다.

왜그런지 찾아보니 입력값을 통째로 String으로 받아 json형식인 채로 들어와 DB의 값과 일치하지 않았다

(패스워드가 "123"이라면 입력받은 값은 "password":"123"이 들어왔다.)

이후 String이 아닌 Dto를 사용하여 정상적으로 json 형식으로 값을 받았다.

 


 

알게 된 점

1. 스프링부트는 json 변환을 위해 MessageConverter를 사용하여 다양한 형식의 데이터를 자바 객체로 변환한다.

2. 전달과정은 보안성과 안정성을 위해 값을 직접 전달하지 않고 Dto를 통해 복제 후 전달한다.

3. Controller는 클라이언트의 요청을 확인 후, 필요한 기능을 가진 Service 메서드로 전달한다

4. Server는 Controller 요청에 맞게 작업 후 값을 반환하거나 Repository로 전달한다

5. Repository는 DB에 값을 전달하거나 요청에 따라 DB에서 값을 가져와 Service로 전달한다

6. 전달과정은 보안성과 안정성을 위해 값을 직접 전달하지 않고 Dto를 통해 복제 후 전달한다.