• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    해결됨

5~6강 질문이요

24.01.23 13:49 작성 24.01.23 13:51 수정 조회수 203

1

post방식은 dto 객체 앞에 @RequestBody가 있는데 get방식은 왜 dto객체 앞에 @RequestParam을 안 써요? 맨 처음에 dto 객체 없었을 때 매개변수 이용하였을 때는 @RequestParam 썼던 것 같은데..

답변 2

·

답변을 작성해보세요.

1

와우 여러 번 읽다 보니 이해가 가네요. 답변도 빠르게해주시고 알아듣기 쉽게 해주셔서 감사합니다

0

안녕하세요~~ ghdtldus03a 님!! 아주 좋은 질문이십니다~~ 👍

 

@RequestParam 은 GET API 혹은 DELETE API 에서 HTTP 쿼리를 객체가 아닌 각각의 파라미터로 받을 때만 사용할 수 있어서 그래요!!

예를 들어

@GetMapping("/xxx")
public void helloWorld(@RequestParam String name, @RequestParam int age) {

}

위의 코드는 Stringint파라미터 (매개변수) 그대로 받았죠! 때문에 @RequestParam 을 작성해주었어요!

하지만 만약 이 두 필드를

public class HelloWorldRequest {
  private final String name;
  private final int age;

  // 필요한 생성자 및 getter
}

이렇게 객체로 묶어 주면

@GetMapping("/xxx")
public void helloWorld(HelloWorldRequest request) {

}

@RequestParam 을 사용하지 않아야 동작하게 됩니다!

 

전체적으로 아래와 같이 정리하시면 됩니다~~ 👍

  • GET / DELETE

    • HTTP 쿼리를 사용한다. (ex. /path?name=안녕?age=99)

    • name과 age를 매개변수로 바로 받겠다 -> @RequestParam

    • name과 age를 객체로 묶어 받겠다 -> X

  • POST / PUT

    • HTTP Body를 사용한다. 무조건 @RequestBody

 

답변이 도움이 되었으면 좋겠습니다~ 감사합니다!!! 🙇