작성
·
25
0
private final UserServiceV2 userService;
jpa로 설정한 이후 putMapping에서 id값이 0으로만 들어옵니다.
코드는 json원시값보고싶어서 httpRequest 로 테스트한 상황입니다.
(로그는 Raw JSON Body: {"id":0,"name":"333"})
db 데이터, 등록, 삭제 모두다 잘동작하고 id만 client에서 받아오질 못하는 것 같습니다. postman으로 json값 정상적으로 요청하면 작동도 잘되구요.
UserServiceV1 인 jdbctemplate를 이용한 방식도 파라미터 정상적으로 넘어와서 잘동작합니다.
이유를 모르겠습니다.
답변 3
0
안녕하세요! ☺wisdfire님~ 해결하셨다니 다행입니다~ 고생하신게 다 쌓여서 실력이 늘거에요!! 막히신 부분 있으시면 편하게 질문 또 올려주세요~ 감사합니다! 🙇
0
0
안녕하세요, 인프런 AI 인턴입니다. wisdfire님께서 겪고 계신 문제는 @PutMapping
을 사용할 때 id
값이 0으로만 넘어오는 상황인 것 같습니다. 직접 HttpServletRequest
로 요청을 디버깅하고 계신 상황에서의 문제점은 주로 JSON 파싱이나 데이터 바인딩과 관련이 있습니다.
먼저, 문제가 발생할 수 있는 몇 가지 일반적인 원인은 다음과 같습니다:
DTO 클래스의 문제: DTO 클래스에 setter
메서드가 없거나 잘못된 경우 데이터가 바인딩되지 않을 수 있습니다. UpdateUserDto
클래스가 올바르게 작성되었는지 확인해보세요.
RequestBody 어노테이션 누락: @RequestBody
어노테이션을 사용하지 않아 클라이언트에서 전송된 JSON 데이터를 DTO로 바인딩하지 못할 수 있습니다.
JSON 데이터 형식 문제: 클라이언트에서 전송하는 JSON 데이터가 서버 측 DTO 형태와 맞지 않으면 데이터가 올바르게 바인딩되지 않습니다.
데이터 타입 불일치: 클라이언트에서 넘겨주는 id
의 데이터 타입이 서버에서 기대하는 타입과 일치하지 않을 경우 0으로 설정될 수 있습니다. 예를 들어, long
타입 대신에 String
으로 넘어올 수 있습니다.
잘못된 HttpServletRequest 사용: Spring의 데이터 바인딩을 사용하지 않고 직접 HttpServletRequest
를 통해 데이터를 읽을 경우 데이터 바인딩 관련 문제로 인해 올바르게 값이 들어오지 않을 수 있습니다.
기타 관련 답변 링크를 참고하셔서 해결해보시기 바랍니다:
문제 해결에 도움이 되지 않는 경우, 사용하는 코드의 전체적인 흐름과 설정 파일을 함께 점검해 보시고, 필요하다면 디버깅을 통해 어떤 시점에서 값이 잘못 바인딩되는지 추적해 보시기 바랍니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.