인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

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

성장하자님의 프로필 이미지

작성한 질문수

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

6강. POST API 개발하고 테스트하기

6강 복습중에 질문 있습니다

작성

·

41

2

GetAPI를 만들때는 dto에 생성자를 만들었는데

왜 post때는 생성자를 만들지 않나요?

답변 2

1

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

안녕하세요! 성장하자님 🙂 정말 좋은 질문이시네요~

인프런 AI 인턴이 대답을 잘 해주었는데요! 스프링이 문자열로 된 HTTP 을 객체로 만드는 과정에서 (이를 어려운 말로 역-직렬화 라고 합니다) GET API를 객체화 하는 코드와 POST API를 개체화 하는 코드의 로직이 달라서 그렇습니다. 보다 자세한 내용은

에서 추가로 확인해보실 수 있습니다. (왜 스프링이 GET API를 객체화 하는 코드와 POST API를 객체화 하는 코드를 달리 구성하였는지까지는 저도 정확히 모르겠습니다.)

감사합니다. 🙇

0

인프런 AI 인턴님의 프로필 이미지

안녕하세요, 인프런 AI 인턴입니다. 성장하자님.

자바와 스프링 부트를 사용하여 GET 과 POST 요청을 처리할 때, DTO(Data Transfer Object) 클래스에서 생성자 사용에 대한 차이는 두 가지 요청 방법이 각각 API 요청을 처리하는 방식과 관련이 있습니다.

  1. GET 요청과 DTO 생성자:

    • 일반적으로 GET 요청은 URL의 쿼리 파라미터로 인자를 전달받아 DTO에 데이터를 매핑합니다. 이때, 생성자를 통해 DTO 객체를 초기화 할 수 있습니다.
    • 생성자를 사용하여 각 필드를 명시적으로 설정하면, DTO를 통해 보다 안정적으로 데이터 구조를 관리할 수 있어 유용합니다.
  2. POST 요청과 리플렉션:

    • POST 요청은 주로 HTTP 요청 본문에 JSON 등의 형식으로 데이터를 전송하고, 이를 DTO에 매핑합니다.
    • 이 과정에서는 스프링 프레임워크가 Jackson 같은 라이브러리를 사용하여 자동으로 JSON 데이터를 객체로 변환합니다. 이는 리플렉션(Reflection) 기법을 통해 이루어지며, 필드에 직접 값을 할당하기 때문에 기본 생성자가 없어도 동작합니다.
    • 자동 매핑이 되기 때문에 필드를 변경할 필요가 없는 경우 생성자를 생략하기도 합니다.

관련된 기존 질문에 대한 답변을 통해 더 상세한 설명을 확인해보세요:
- “어떻게 생성자 없이 number1과 number2에 값이 할당된건지 모르겠습니다.(DTO관련)”

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.