• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

안녕하세요. 5강, 6강 관련 질문 남깁니다.

23.01.31 14:10 작성 조회수 392

3

 안녕하세요. 5강 6강을 수강하던 중 몇 가지 궁금증이 생겨 질문 남깁니다.

  • 5강 GET API에서 사용된 CalculatorAddRequest -> 생성자 O, getter O

  • 6강 POST API에서 사용된 CalculatorMultiplyRequest -> 생성자 X, getter O

 

1. GET API - CalculatorAddRequest에서 number1, number2 필드에 왜 final 키워드가 필요한가요?

2. GET API - CalculatorAddRequest에서 생성자를 없애면 값이 0으로 바인딩되던데 왜그럴까요?

3. POST API - CalculatorMultiplyRequest에서는 왜 생성자가 없어도 값이 바인딩되는 걸까요? @RequestBody 어노테이션 때문일까요?

 

감사합니다.

답변 3

·

답변을 작성해보세요.

2

안녕하세요! migein7님~~ 😊 크으~~~ 강의에서 다루었던 내용을 기반으로 이렇게 저렇게 변경해보시는게 너무 대단하십니다!!! 👍 정말 빠르게 실력이 느실거에요!! 👍

 

질문 주신 내용에 답변 드려보겠습니다!!

1. GET API - CalculatorAddRequest에서 number1, number2 필드에 왜 final 키워드가 필요한가요?

  • 필요하지 않습니다! 다만 아시다시피 final 키워드를 필드에 붙이면 변경이 불가능하고, DTO는 최초 객체 생성 이후 필드가 변경될 일이 없기 때문에 붙여주었습니다!

 

2. GET API - CalculatorAddRequest에서 생성자를 없애면 값이 0으로 바인딩되던데 왜그럴까요?

  • GET API에서 사용되는 DTO의 경우, POST와 달리 생성자를 통해 값이 바인딩 되기 때문입니다!

  • 만약 생성자가 없다면, API를 통해 들어온 쿼리가 바인딩 되는게 아니라, 기본값인 0이 필드에 들어가게 됩니다.

public class Data {
  private int number;
}

new Data(); // 이렇게 해보시면 number에 0이 들어 있을 겁니다!

 

3. POST API - CalculatorMultiplyRequest에서는 왜 생성자가 없어도 값이 바인딩되는 걸까요? @RequestBody 어노테이션 때문일까요?

  • 네네 맞습니다!! POST API에서 사용되는 DTO의 경우, getter 를 통해 값이 바인딩 되기 때문에 생성자가 없더라도 필드에 값을 넣을 수 있는데요! @RequestBody 를 붙이게 되면 바인딩 되는 로직이 GET API와는 달라지기 때문입니다!

 

강의를 들으시다 또 궁금한 점이 생기신다면 편하게 질문 주세요!! 😊

감사합니다!! 🙏🙇

 

0

mrx님의 프로필

mrx

2023.03.15

3번 질문에 추가적으로 궁금한점이 그러면 생성자가 있더라도 상관이 없는걸까요?!

넵넵! 생성자가 있더라도 값이 바인딩 됩니다!!

0

migein7님의 프로필

migein7

질문자

2023.02.08

친절한 답변 감사합니다!ㅎㅎㅎㅎ