인프런 커뮤니티 질문&답변

hope님의 프로필 이미지
hope

작성한 질문수

자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]

15강. 유저 업데이트 API, 삭제 API 예외 처리 하기

사용자 이름 수정에서 막힙니다

해결된 질문

작성

·

369

·

수정됨

1

강의 코드를 그대로 따라가고 있지는 않고 기존에 알고 있던 내용이랑 합쳐서 코드를 작성하고 있습니다.

Controller

@PutMapping("/user")
public void updateUserName(@RequestBody UpdateUserDto updateDto) {
    userService.updateUserName(updateDto.getId(), updateDto.getName());
}

Dto

public class UpdateUserDto {

    private long id;
    private String name;

    public long getId() {
        return id;
    }

    public String getName() {
        return name;
    }

Repository

@Override
public void updateUserName(long id, String name) {
    String sql = "update user set name = ? where id = ?";
    jdbcTemplate.update(sql, name, id);
}

Service

@Override
public void updateUserName(long id, String name) {
    userRepository.updateUserName(id, name);
}

 

수정을 눌렀을 때 name은 정상적으로 값이 넘어오는데 id가 계속 0으로 넘어옵니다,,

등록 시에는 DB에 id가 정상적으로 입력되고 있는데 뭐가 문제일까요?

답변 1

1

최태현님의 프로필 이미지
최태현
지식공유자

안녕하세요 hope님!! 남겨주신 코드를 확인해보았을 때 모두 정상적으로 작성해주신 것 같아요!!!

@RequestBody 도 잘 작성해주셨고~ DTO도 잘 만들어주셔서 id 가 넘어오지 않을리가 없을 것 같은데 이상하군요!!

제공되는 웹 UI를 사용하고 계신 상황에서, Controller로 넘어온 DTO의 id 를 가져오니 0이 찍힌다 라는 말씀이시죠~~

 

음.. 그렇다면 한 가지 의심해볼만한 내용은 GET API 에서 id 를 정상적으로 주고 있는지 확인해봐야 할 것 같습니다!

결국 화면에서는 GET을 통해 넘어온 id를 다시 넘길 뿐이라서 만약 GET API에서 id를 모두 0으로 주고 있다거나 하는 에러가 있다면, PUT API까지 영향을 줄 수 있을 것 같아요!

 

또한, 브라우저의 개발자 도구 > Network를 확인해보시면, 화면에서 서버로 데이터를 어떻게 전달하고 있는지 확인해보실 수도 있답니다! 이를 사용하면

  • 클라이언트는 값을 5로 보냈는데 서버가 0으로 받는건지

  • 클라이언트가 값을 0으로 보내서 서버가 0으로 받는건지

구분할 수 있어 보다 정확한 진단을 하실 수 있을 거에요!

 

꼭 해결되셨으면 좋겠습니다~ 감사합니다! 🙏🙏

hope님의 프로필 이미지
hope
질문자

방금 해결했습니다..!

개발자모드에서 넘어가는 값 확인해보니까 id가 null로 넘어가고 있었네요.

감사합니다.

hope님의 프로필 이미지
hope

작성한 질문수

질문하기