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

작성자 없음

작성자 정보가 삭제된 글입니다.

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

14강. 유저 업데이트 API, 삭제 API 개발과 테스트

request

23.02.19 12:25 작성

·

462

1

public void updateUser(@RequestBody UserUpdateRequest request)에서 request를 다른 이름으로 바꾸면 밑줄이 쳐지는데 왜 바꾸면 안 되는 건가요?

답변 2

0

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

2023. 02. 20. 02:44

안녕하세요, 1026999님!! 답변해주셔서 정말 감사드립니다! 🙏🙏

1026999님께서 말씀해주신 내용은 request로 되어 있는 UserUpdateRequest 객체의 필드 이름을 바꾸었을 때와 관련이 있고, 실제로 @JsonProperty 와 같은 jackson 어노테이션을 사용해 해결할 수 있습니다. (관련 블로그 : https://gilu-world.tistory.com/100)

 

ㅇㅇ님의 질문에도 추가적으로 답변을 드려볼게요! 혹시 말씀해주시는 "밑줄이 쳐진다"라는게 이런 상황이실까요?

image

질문 주신 내용이 "request 라는 파라미터 이름을 바꿀 수 있는가?" 라면 바꿀 수 있습니다!

현재 위의 코드는 파라미터의 이름만 request 에서 req 로 바꾸고 해당 파라미터를 사용하는 코드를 request 에서 req 로 바꾸지 않아 빨간 에러 표시가 나고 있습니다.

image

즉, 아래에서 파라미터를 사용할 때 req 라고 표시해준다면 정상적으로 활용가능하다는 의미입니다!

@RequestBody 라는 어노테이션을 붙였을지라도, 결국 하나의 함수 파라미터이기 때문에 원하시는대로 request 라는 이름을 변경하실 수 있습니다. 😊

 

감사합니다!! 🙏

0

1026999님의 프로필 이미지

2023. 02. 19. 13:28

밑줄이 쳐지는 이유는 @RequestBody 어노테이션으로 인해 스프링이 해당 매개변수가 HTTP 요청의 본문(body)에 있는 JSON 또는 XML 데이터로부터 값을 바인딩해야 한다는 것을 나타내기 위해서입니다.

따라서 해당 매개변수를 바꾸면 스프링이 HTTP 요청 본문으로부터 데이터를 바인딩하지 못하게 되므로 밑줄이 쳐지는 것입니다. 만약 매개변수 이름을 변경하고 싶다면, @JsonProperty 어노테이션을 사용하여 요청 본문의 필드 이름과 매핑할 수 있습니다. 예를 들어, UserUpdateRequest 클래스에서 name 필드를 userName으로 변경하려면 다음과 같이 @JsonProperty 어노테이션을 사용할 수 있습니다:

 codepublic class UserUpdateRequest {
    @JsonProperty("userName")
    private String name;
    // ...
}

이제 userName 필드 이름을 사용하여 HTTP 요청 본문에서 데이터를 바인딩할 수 있습니다.

작성자 없음

작성자 정보가 삭제된 글입니다.

질문하기