inflearn logo
강의

Khóa học

Chia sẻ kiến thức

Tạo máy chủ đầu tiên của bạn bằng Java và Spring Boot Bất kỳ ai cũng có thể dễ dàng chuyển từ giai đoạn phát triển sang triển khai! [Gói phát triển máy chủ tất cả trong một]

Bài 6. Phát triển và kiểm tra POST API

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

695

migein7

1 câu hỏi đã được viết

3

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

 

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

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

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

 

감사합니다.

aws java spring JPA jpa mysql spring-boot

Câu trả lời 3

2

lannstark

안녕하세요! 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

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

1

lannstark

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

0

migein7

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

패키지 구분에 대해 궁금한게 있습니다

0

126

2

리액트 관련 질문이 있습니다.

0

146

2

스프링부트 버전

0

170

2

7강 강의를 들으려고 했는데 오류가 나서 서버가 안 켜지는거 같아요.

0

203

2

33강. UserLoanHistory의 관계성에 대한 질문

1

130

2

Java JDK 버전 문의의 건

0

257

2

ec2 에서 Linux버전이 달라져서 설치가 안되는것 같은데 자료 최신화좀 해주세요.

0

173

3

h2 console 접속했을 테이블 질문

1

125

1

ec2 서버에서 스프링 실행도 되고 인바운드 설정까지 했는데 index.html 안됨

0

186

2

15강. updateUser() 질문

0

115

2

깃허브 질

0

177

2

여기까지 다 끝냈다고 하셨는데

0

147

2

왜안될까요

0

149

2

MySQL 창이안ㄴ뜹니다

0

157

2

포스트맨

0

94

1

spring 개념적인 질문

0

142

2

인텔리제이 샘플코드 실행 안됨 오류

0

244

2

aws 배포할때 .env 파일에 저장한 환경변수에 관하여 여쭤볼게 있습니다

0

148

1

마이그레이션 오류입니다.

0

270

3

Whitelabel Error Page 오류가 났습니다.

0

355

2

안녕하십니까! 오류가 났습니다.. 도와주세요 ㅜㅜ

1

165

3

궁금한게 있습니다.

0

128

2

DTO 관련

0

124

2

궁금한게 있습니다!

0

123

2